Я слишком беспокоюсь о себе с этим rand().rand() in for loop in nawk возвращает неизменное значение -ksh
Я хочу добавить 1000
случайные числа в массиве, это то, что у меня есть до сих пор, оно работает без ошибок, но rand все время присваивает одинаковое число в передаваемых массивах. меняя случайные числа, я хочу, чтобы это было от 1 до 999 ... любые идеи, что происходит не так?
Кстати я бегу в KSH ...
nawk ' BEGIN{
for (i=0; i<=999; i++) {
srand()
NUMBERS[i]= int(rand()*(999))
print NUMBERS[i]
}
}'
P.S. Не дубликат, ни один другой вопрос для ksh.
ОБНОВЛЕНО
nawk ' BEGIN{
srand(1)
for (i=0; i<=999; i++) {
NUMBERS[i]= int(rand()*(999))
XNUMBERS[i]= int(rand()*(999))
print NUMBERS[i]
print XNUMBERS[i]
}
}'
UPDATE_2
Так что рабочий код у меня есть эта
NUMBERS=`nawk ' BEGIN{
srand()
for (i=0; i<=999; i++) {
printf("%s\n", 100 + int(rand() * (899)));
}
}'`
NUMBERS
#echo $NUMBERS
XNUMBERS=`nawk ' BEGIN{
srand()
for (i=0; i<=999; i++) {
XNUMBERS[i]= 100 + int(rand() * (899));
}
for (i=0; i<=999; i++) {
ver=XNUMBERS[i] "";
rev = "";
for (q=length(ver); q!=0; q--) {
rev = rev substr(ver, q, 1);
}
printf("%s\n", XNUMBERS[i] "|" rev);
}
}'`
я создаю два различных списка, но рандов() дает в обоих одинаковых точных числах в том же положении .... как я могу сделать второй rand дать diff частные номера ?????
Final Update
Sooooo, чтобы какие-то люди читают и имеют те же проблемы, решение является и^сон 1 между двумя частями, которые вы называете srand ....
винт меня .. это была вина? не могу поверить, что это ... проверьте, пожалуйста, обновленное сообщение с кодом, я поставлю srand из цикла, неправильно ли я добавить значение 1? я использую его для того, чтобы сказать, что 1 является стартовым значением. – hedgehog
Правильно, разрешение временной метки находится в секундах, поэтому ваш цикл будет давать одинаковое значение на каждой итерации, если все итерации происходят в одном и том же 1-секундном окне. Если текущее время перешло с 12:00:01 до 12:00:02 или подобное во время работы вашего цикла, вы получите 2 значения. @hedgehog - Перемещение srand() вне цикла - это правильная вещь, но с использованием жестко заданного начального значения 1 вы отрицаете всю суть использования srand(), которая заключается в получении нового начального значения для rand() при каждом вызове сценария (если вызовы разделены на 1 секунду или больше). –
Я вижу, но я думал, что прочитал, что значение, которое вы добавляете в srand, поэтому в этом случае я попытался 1, является стартовым значением случайных чисел, так как я вижу, что это похоже на то, что я говорю, выберите случайное число из От 1 до 999 ... я ошибаюсь? – hedgehog