我想生成 10 个介于 100 和 200 之间的随机数(含)。如何使用 rand 来实现?
答案1
如果你指的rand
是包裹rand
(与 OpenSSL 的相反),它不支持下限,只支持上限。你可以做的是将下限移至零然后添加下限技巧:
$ rand -N 10 -M 100 -e -d '\n' | awk '{$0 += 100}1'
170
180
192
168
169
170
117
180
167
142
-N
是您需要的随机数的数量-M
将是数字输出的上限rand
,因此(最大限度-分钟= 100)-e -d '\n'
将分隔符设置为换行符。这是为了方便处理awk
。
然后代码awk
取出每一行并将它加 100。
答案2
使用python
:
#!/usr/bin/env python2
import random
for i in range(10):
print random.randint(100, 200)
输出 :
187
123
194
190
124
121
191
103
126
192
这里我使用了的random
模块python
来生成10(range(10)
)个介于100到200(含)之间的随机整数(random.randint(100, 200)
)。
答案3
这是一个 Perl 方法:
$ perl -le 'print 100+int(rand(101)) for(1..10)'
129
197
127
167
116
134
143
134
122
117
Or, on the same line:
$ perl -e 'print 100+int(rand(101))." " for(1..10); print "\n"'
147 181 146 115 126 116 154 112 100 116
你也可以使用/dev/urandom
(改编自这里):
$ for((i=0;i<=10;i++)); do
echo $(( 100+(`od -An -N2 -i /dev/urandom` )%(101)));
done
101
156
102
190
152
130
178
165
186
173
143
答案4
您还可以使用awk
:
$ awk -v min=100 -v max=200 -v freq=10 'BEGIN{srand(); for(i=0;i<freq;i++)print int(min+rand()*(max-min+1))}'
132
131
148
100
104
125
103
197
184
165