Я хочу сгенерировать, скажем, 10 случайных чисел от 100 до 200 (оба включены). Как мне сделать это с помощью rand?
С shuf
от GNU coreutils:
$ shuf -i 100-200 -n 10
159
112
192
140
166
121
135
120
198
139
Если Вы имеете в виду rand
от rand
пакет (в противоположность тому от OpenSSL), это не поддерживает нижнюю границу, только верхнюю границу. То, что можно сделать, является приемом shift-lower-bound-to-zero-then-add-lower-bound:
$ 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 к ней.
Можно использовать $RANDOM
.
number=0 #initialize the number
FLOOR=100
RANGE=200
while [ "$number" -le $FLOOR ]
do
number=$RANDOM
let "number %= $RANGE" # Scales $number down within $RANGE.
done
echo "Random number between $FLOOR and $RANGE $number"
echo
cd /proc/self
перенаправления к удару /proc/<BASH_PID>
и ls -l /proc/self
шоу /proc/<LS_PID>
факт cd
, действительно ли оболочка встроена, и ls
двоичное приложение?
– IanC
10 August 2016 в 07:04
Можно также использовать 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
vivek@vivek:~$ df -Th Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 32G 0 32G 0% /dev tmpfs tmpfs 6.3G 18M 6.3G 1% /run /dev/sda5 ext4 430G 408G 0 100% / tmpfs tmpfs 32G 76M 32G 1% /dev/shm tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/sda3 vfat 96M 29M 68M 30% /boot/efi tmpfs tmpfs 6.3G 84K 6.3G 1% /run/user/1000
Как очистить sda5, поскольку он так или иначе занимает все место
– kRazzy R
16 November 2017 в 08:30
Ничто захватывающее - простая эмуляция для цикла с i
счетчик и while
. Диапазон установлен с помощью if . . . else . . .fi
структура. Примечание стороны: моя подсказка работает каталог сначала, затем входная область, не запутывайтесь на том, что Вы видите
$ ./bashRadom.sh 100 200
190
111
101
158
171
197
199
147
142
125
bashRadom.sh
:
#! /bin/bash
i=0;
while [ $i -lt 10 ]; do
NUM=$RANDOM;
if [ $NUM -gt $1 ] && [ $NUM -lt $2 ]; then
echo $NUM;
else continue;
fi;
i=$((i+1));
done
Это - код, который я использовал при посещении C урока в моем университете. Маленькое редактирование, которое я добавил для установки этому вопросу, является использованием параметров командной строки (вместо значений жесткого кодирования в источник)
$ gcc randfunc.c
$ ./a.out 100 200
100
106
155
132
161
130
110
195
105
162
187
randfunc.c
:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int randInt (int, int);
void
main (int argc, char *argv[])
{
int min = atoi (argv[1]), max = atoi (argv[2]), i = 0;
srand (time (NULL));
for (i; i < 11; i++)
{
printf ("%d \n", randInt (min, max));
}
}
int
randInt (int a, int b)
{
int randValue;
randValue = a + (int) rand () % (b - a + 1);
return randValue;
}
Используя 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)
).
clean
средство, что раздел отмечен как хорошо, и фактический тест, пропускается.
– Simon Richter
10 August 2016 в 04:32
Вот является 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
clean
означает, что раздел был размонтирован чисто и таким образом, никакая проверка не необходима (в противоположность you' сообщения воспроизведения журнала; d присматривают за сбоем питания или другим небезопасным завершением работы).
– Mark
10 August 2016 в 08:04