Tad, вот я и говорю, (что не курю) что обсуждаемый RND нужен в основном для перебора массива в случайном порядке, поэтому точка _min не нужна, _min=0 вот этот блок и выкинуть из RND, а вставить в ArrayEnum - там ему самое место.
Random *(_max - i)+i - случайное число (индекс) в оставшемся неперемешанным диапазоне
Этот топик читают: Гость
Ответов: 8928
Рейтинг: 823
|
|||
карма: 19 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Леонид, я спрашиваю - ГДЕ ВЗЯЛ Random со звёздочкой ? Я раньше никогда не встречал
Random без параметров и Random(_max - i)+i знаю, а Random *(_max - i)+i к.ф. Чапаев писал(а): кто такой ? Почему не знаю ?------------ Дoбавленo в 19.03: Леонид писал(а): вот этот блок и выкинуть из RND, а вставить в ArrayEnum |
|||
карма: 25 |
|
Ответов: 8928
Рейтинг: 823
|
|||
Tad, взял у Dilma из Rnd версии 132 или любой другой:
Random писал(а): procedure THIRandom._work_doRandom0;
begin FRnd := Random*(_prop_Max - _prop_Min + 1) + _prop_Min - 0.5; _hi_CreateEvent(_Data,@_event_onRandom,integer(Round(FRnd))); end; где Random* это не Random со звёздочкой, а Random умножить на |
|||
карма: 19 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Леонид писал(а): Random умножить на Век бы не догадался. |
|||
карма: 25 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Леонид писал(а): хотя цифры - те же строкиНе те же. Массив чисел меньше, чем массив символов, или спорить будем Если что-то делать, то делать надо компонент работы с массивом -- перемешивание, ArrayShuffle |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco,
Tad писал(а): А я бы добавил одно телодвижение if i<>j |
|||
карма: 25 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Tad писал(а): Что скажешь?Я не пойму его назначение, объясни популярно |
|||
карма: 22 |
|
Ответов: 8928
Рейтинг: 823
|
|||
nesco, чтобы ни одно число не стало на свое "законное" место полагаю, что этого делать не надо - ведь мы говорим о случае, а случайно, хотя и с малой вероятностью, можно и все числа выставить по ранжиру
|
|||
карма: 19 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Гы. Воля случая -- пожалуй, стоит оставить такой вариант
|
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco писал(а): объясни популярно(Блин. Ответ еврейский получился. Видно страна проживания влияет ) ------------ Дoбавленo в 09.39: Леонид,не так уж и редко люди и в рулетку выигрывают. (Правда мелкие суммы. Но это уже три совпадения должно быть ) ------------ Дoбавленo в 09.40: nesco писал(а): Гы. Воля случая |
|||
карма: 25 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Tad, протестируй, я поправил длину массива и ввел твое предложение в код
|
|||
карма: 22 |
|
Ответов: 8928
Рейтинг: 823
|
|||
Tad, а что больше нагружает процессор: один-два раза лишний обмен значениями (не самая медленная операция) или проверка if i<>j для каждого прохождения тела цикла?
|
|||
карма: 19 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 2 раз(а), последний 2021-05-21 12:59:08 |
|||
карма: 0 |
|
Ответов: 8928
Рейтинг: 823
|
|||
Tad, да не надо циклы считать, поступи, как истинный радиолюбитель (не при Galkov-е будь сказано): проверь на 100000 так и так с засечкой времени
|
|||
карма: 19 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Леонид, ну и какой результат ? Я на работе. Дома буду после 3-х (4-х по Москве)
|
|||
карма: 25 |
|