Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как исключить повторные значения при запуске функции Random?
|
|||
|---|---|---|---|
|
#18+
Собственно то, что хотел спросить. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 10:19 |
|
||
|
Как исключить повторные значения при запуске функции Random?
|
|||
|---|---|---|---|
|
#18+
ну ты задай диапазон побольше, например 1000000. вероятность появления повторного значения ничтожно мала ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 10:25 |
|
||
|
Как исключить повторные значения при запуске функции Random?
|
|||
|---|---|---|---|
|
#18+
Можешь поюзать алгоритмя CRC CRC16-> 5 чисел CRC32-> 10 чисел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 10:29 |
|
||
|
Как исключить повторные значения при запуске функции Random?
|
|||
|---|---|---|---|
|
#18+
Напр. создать массив всех возможных значений, и использовать Random для того, чтобы эти значения перемешать один раз в начале. Потом использовать массив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 10:32 |
|
||
|
Как исключить повторные значения при запуске функции Random?
|
|||
|---|---|---|---|
|
#18+
В formcreate напиши randomize; Viman ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 10:35 |
|
||
|
Как исключить повторные значения при запуске функции Random?
|
|||
|---|---|---|---|
|
#18+
или также в Create формы, например, RandSeed := GetTickCount ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 10:39 |
|
||
|
Как исключить повторные значения при запуске функции Random?
|
|||
|---|---|---|---|
|
#18+
В formcreate я и так запускаю Randomize. Из диапазона 1-300 пытаюсь выбрать 100 случайных значений. Попадаются повторы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 10:48 |
|
||
|
Как исключить повторные значения при запуске функции Random?
|
|||
|---|---|---|---|
|
#18+
ну тогда проверяй - если повтор, то генери еще одно число ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 10:49 |
|
||
|
Как исключить повторные значения при запуске функции Random?
|
|||
|---|---|---|---|
|
#18+
srf2000: Вот как проверить и есть основная проблема :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 10:56 |
|
||
|
Как исключить повторные значения при запуске функции Random?
|
|||
|---|---|---|---|
|
#18+
каждое генерируемое число добавляешь в массив, предварительно сравнив его с уже существующими элементами, если такое уже есть, то не добавляешь, а генеришь новое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 11:09 |
|
||
|
Как исключить повторные значения при запуске функции Random?
|
|||
|---|---|---|---|
|
#18+
Сашка: Именно так я себе это и представляю, а написать не могу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 11:20 |
|
||
|
Как исключить повторные значения при запуске функции Random?
|
|||
|---|---|---|---|
|
#18+
делается это с помощью рекурсивной функции. примерно вот так procedure TForm1.Button1Click(Sender: TObject); var a: array [0..99] of Integer; k, i: Integer; function aaa(i: Integer): Integer; var j: Integer; begin k := Random(300); for j := 0 to i-1 do if a[j] = k then aaa(i); Result := k; end; begin a[0] := Random(300); for i := 1 to 99 do a := aaa(i); end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 12:15 |
|
||
|
Как исключить повторные значения при запуске функции Random?
|
|||
|---|---|---|---|
|
#18+
Содай массив от 1 до 300. И обьяви второй массив в который будут заноситься случайные цифры из первого. Потом включаешь random - выбрал цифру - перенес во 2 массив. И главное: на месте выбранного в 1-ом массиве - пиши 0. При выборке делай сравнение на 0, если true то repeat, если false то переноси во второй массив. Работает быстро! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 12:56 |
|
||
|
Как исключить повторные значения при запуске функции Random?
|
|||
|---|---|---|---|
|
#18+
ИМХО лучше сделай булевский массив B размерностью N. Все в true. При генерации числа M проверяй значение B[M], если true, то это новое число и B[M]=false: если false - то это повторное знчение и надо генерить новое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 13:32 |
|
||
|
Как исключить повторные значения при запуске функции Random?
|
|||
|---|---|---|---|
|
#18+
Проблему удалось более или менее удовлетворительно решить следующим образом: procedure TForm1.Button1Click(Sender: TObject); var _a, _ar: Integer; _abn: array[0..99] of Integer; function aaa(): Integer; var j: Integer; begin j := 1; _a := Random(300); while j <= 100 do begin if _abn[j] = _a then begin _a := Random(300); j := 0; end; j := j+1; end; Result := _a; end; begin for _ar := 1 to 100 do _abn[_ar] := 0; for _ar := 1 to 100 do begin _abn[_ar] := aaa(); ........ end; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 08:04 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32329741&tid=2115822]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
83ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 454ms |

| 0 / 0 |
