首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免随机列表的重复结果?

如何避免随机列表的重复结果?
EN

Unix & Linux用户
提问于 2019-06-24 23:55:57
回答 1查看 1.8K关注 0票数 0

假设像这样的脚本

代码语言:javascript
复制
#!/bin/bash
array[0]="123"
array[1]="333"
array[2]="5566"
array[3]="135"
array[4]="68"
array[5]="45"
array[6]="78"
array[7]="32"
array[8]="190"

number()
{
size=${#array[@]}
index=$(($RANDOM % $size))
sleep 0.5s
echo  Lucky number is ... ${array[$index]}
}

for i in {1..21}; do number; done

是可以的.我想在间隔中得到随机数,但也显示了很多陷阱

代码语言:javascript
复制
Lucky number is ... 135
Lucky number is ... 135
Lucky number is ... 5566
Lucky number is ... 78
Lucky number is ... 190
Lucky number is ... 333
Lucky number is ... 190
Lucky number is ... 135
Lucky number is ... 5566
Lucky number is ... 333
Lucky number is ... 45
Lucky number is ... 45
Lucky number is ... 68
Lucky number is ... 68
Lucky number is ... 333
Lucky number is ... 78
Lucky number is ... 78
Lucky number is ... 5566
Lucky number is ... 78
Lucky number is ... 333
Lucky number is ... 135

我想要这样的结果

代码语言:javascript
复制
Lucky number is ... 135
Lucky number is ... 5566
Lucky number is ... 78
Lucky number is ... 190
Lucky number is ... 333
Lucky number is ... 45
Lucky number is ... 68

这样我们就可以得到“幸运号”而不需要欺骗,唯一的人知道怎么做吗?编辑脚本和减少21到9不改变,我甚至得到重复。

代码语言:javascript
复制
Lucky number is ... 135
Lucky number is ... 68
Lucky number is ... 45
Lucky number is ... 333
Lucky number is ... 78
Lucky number is ... 135
Lucky number is ... 135
Lucky number is ... 333
Lucky number is ... 32
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-06-25 00:02:10

把这个列表当作一副牌。 洗牌这些数字,然后一次读一张。

在BASH中洗牌数组元素的简单方法?

代码语言:javascript
复制
#!/bin/bash
array=("123" "333" "5566" "135" "68" "45" "78" "32" "190")

shuffle() {
    array=($(shuf -e "${array[@]}"))
    index=0
}

number() {
   size=${#array[@]}
   sleep 0.5s

   if (( index >= size )) ; then
      shuffle
   fi

   echo Lucky number is ... ${array[$index]}
   index=$((index + 1))
}

for i in {1..21}; do number; done
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/526723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档