:: Visual Foxpro, Foxpro for DOS
функция RAND( )
alexzima
Автор

Сообщений: 147
Дата регистрации: 10.07.2006
Доброго времени суток!
Есть функция Rand()
Мне нужно получить последовательность из 5 случайных чисел от 1 до 100, но с повторами:
Т. е. к примеру получить 5 чисел вида 12,34,45,79,34 или 1,4,4,78,99 и т. д.  
Ratings: 0 negative/0 positive
Re: функция RAND( )
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
Если я правильно понял задание, то:
1) Сначала датчик отрабатывает 4 раза, определяя сами числа в диапазоне от 1 до 100.
2) Затем он отрабатывает 1 раз, определяя число в диапазоне от 1 до 4, которое будет показывать порядковый номер одного из 4 чисел, которое надо задвоить.
3) И наконец, последний запуск функции возвратит число в диапазоне от 1 до 5, определяющее, каким это задвоенное число будет по-порядку в последовательности чисел.



Исправлено 1 раз(а). Последнее : akvvohinc, 04.02.21 21:48
Ratings: 0 negative/0 positive
Re: функция RAND( )
of63

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Сгенерируй 5 случайных чисел, потом замени одно случайное (выбранное из 5ки) значение на уже имеющееся в 5ке.
Если надо повторов более одного, то несколько раз это проделать...
Ratings: 0 negative/0 positive
Re: функция RAND( )
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
of63
Сгенерируй 5 случайных чисел, потом замени одно случайное (выбранное из 5ки) значение на уже имеющееся в 5ке.
Если надо повторов более одного, то несколько раз это проделать...

Кстати, если повторы нужны всегда, можно вообще генерировать только по 4 случайных числа. А потом случайно выбирать любое из четверки для дублирования и превращения набора в пятерку.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: функция RAND( )
of63

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Угу. Можно число повторов тоже генерировать случайно
Ratings: 0 negative/0 positive
Re: функция RAND( )
sphinx

Сообщений: 31180
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
of63
Угу. Можно число повторов тоже генерировать случайно

Я так и делал.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: функция RAND( )
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
При получении псевдослучайного числа от 1 до 100 при помощи RAND повторы могут быть и сами по себе, безо всяких дополнительных действий.
RAND(29)
? INT(RAND()*100)+1 && 97
?? INT(RAND()*100)+1 && 16
?? INT(RAND()*100)+1 && 97 повтор
?? INT(RAND()*100)+1 && 85
?? INT(RAND()*100)+1 && 17


------------------
WBR, Igor
Ratings: 0 negative/2 positive
Re: функция RAND( )
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
Значит, на первом шаге делаем бесконечный цикл, пока не получим 5 разных чисел.
Ratings: 0 negative/0 positive
Re: функция RAND( )
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Не ясна цель вопрошающего, потому дать точный ответ невозможно. Если это нужно для какого-то рода тестов, то вполне сгодится и просто заранее созданный набор, или группа наборов из которой будет случайно выбран один. Для баловства - да, можно взять 4 rand чисел и 1 для размещения дубля (при том если для дубля всегда брать 1-й элемент, то наверняка исказится "случайность" наборов - но для несерьёзных целей можно и забить на это).
А если это что-то серьёзное, типа лотереи, то там уж как минимум стоит не RAND использовать а более серьёзный генератор - хотя бы АПИ-шный криптографический. Хотя я сомневаюсь что там стояла бы задача "обязательно 2 одинаковых" Скорее уж наоборот - там надо избегать повторений.


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 15 (Гостей: 15)

© 2000-2024 Fox Club 
Яндекс.Метрика