Як задати діапазон для random

Як задати діапазон чисел для функції Random? Тобто мені потрібно не від 0 до N, а наприклад від 1 до N

Це дуже просто: змістити діапазон в меншу сторону (у даному випадку на одиницю), а до результату це зміщення додати.

А можна приклад привести?

Може тобі ще приклад складання двох цілочисельних чисел привести? А то дійсно. як то незрозуміло написано. скласти два числа. чорт його знає що під цим ховається.

мда. ладно, спробую по-іншому:

Це дуже просто: зменшити значення діапазону (в даному випадку на одиницю), а результат збільшити. Це і буде називатися зміщенням діапазону.

Я вообщето тільки починаю програмувати, принаймні вчуся. І слова "а до результату це зміщення додати.
"Не зовсім допонімаю! Не невже так складно приклад привести?

Можна так
a: = Random (N) +1

+1 - забезпечує мінімальне значення.
Random (N) - до мінімального значення додає випадкове сило в діапазоні [0, N-1].
У підсумку маємо число в межах [1, N].

Ні, приклад привести навіть простіше і швидше. Але сенс? В результаті пояснення, навіть якщо невірного, є шанс, що Ви побачите хід міркування і навчитеся мислити самостійно. У разі коду, є шанс, що Ви зашаблонітесь. А в даному випадку рівень програмування взагалі не має значення - чиста математика.

Гаразд хлопці. НЕ гарячіться! Мабуть я ще не доріс для того щоб зрозуміти вас так просто на словах. Мені дійсно без прикладу незрозуміло!
Якщо вас це напружує. нема чого взагалі відповідати!
Це я не в докір, але мене теж можна зрозуміти!

відповідь останній. застарів!

і ще. перенесення рядка в Memo це символ - # 13 потрібно додати чи ні?


> Alex_Rom # XA0; (08.07.04 2:38) [9]

якщо
a: = Random (N) +1
то
+1 - забезпечує мінімальне значення. вірно
Random (N) - до мінімального значення додає випадкове сило в діапазоні [0, N-1]. невірно
У підсумку маємо число в межах [1, N]. невірно

Random (N) - до мінімального значення додає випадкове сило в діапазоні [0, N].
У підсумку маємо число в межах [1, N + 1].

Random (N) - до мінімального значення додає випадкове сило в діапазоні [0, N].
У підсумку маємо число в межах [1, N + 1]. - Звичайно, ні.
Візьми напиши в Паскалі прогу:
for i: = 1 to 50 do writeln (random (1)) І ти не отримаєш жодної одиниці!
Результатом роботи функції random (n) є число в межах [0, n-1] # XA0 ;!

Як я зрозумів:
n: = n-1;
a: = Random (n) +1;

> Alex_Rom # XA0;

Так, старію. Ще раз приношу вибачення.

Ні.
Якщо ти хочеш отримати результат в межах [1, N], то просто пишеш як я написав спочатку:
a: = Random (n) +1

> Так, старію. Ще раз приношу вибачення.

У всьому винен Борланд :) Ліву кордон включили, а праву не стали :) Блін, через таких дрібниць потім баги місяць ловиш.

Згоден. У мене таке теж траплялося. )

Ось бачите яке питання я задав! )))


> Zvr @ b # XA0; (08.07.04 3:01) [23]

ТАК, трафік непогано підняв :)
Ну, я так вважаю, що тепер питання вичерпано, а тема закрита.


> Результатом роботи функції random (n) є число в межах
> [0, n-1] # XA0 ;!

Не зовсім вірно.
Random returns a random number within the range 0 <= X

Капібари, що ж не вірно? # XA0; У наведеній вами цитаті з хелпа написано # XA0; "X

Ну якщо мова йде про цілих числах то все в порядку.

Хоча визначення з хелп справедливо для будь-яких чисел.

Для цілих чисел краще підходити з такої позиції - N це кількість чисел в інтревале. Інтервал починається з нуля.
Реальна формула така Random (N) + Offset
Зсув 9 природно в запису опускається.
Це як на лінійці, 10 сантиметрів завжди 10 сантиметрів, незалежно від початкової точки на цій лінійці.


> Як задати діапазон чисел для функції Random? Тобто мені потрібно
> Немає від 0 до N, а наприклад від 1 до N

Від 1 до N - x: = random (n) + 1;
Від 2 до N - x: = random (n-1) + 2; ІМХО


> Від 2 до N - x: = random (n-1) + 2; ІМХО

Від 2 до N - x: = random (N-2) + 2 ;.

//Random(N1..N2)=Random(N2-N1+1)+N1
можна Trunc (Random * (N2-N1 + 1)) + N1 або Round (Random * (N2-N1)) + N1, але тоді N2, теоретично, може випадати з незначно меншою ймовірністю, так як для дискретних дійсних чисел теорема про повноті континиума НЕ вполняется - хоча це потрібно прикинути точніше.

Пам'ять: 0.78 MB
Час: 0.076 c