Як задати діапазон чисел для функції 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]
ТАК, трафік непогано підняв :)
Ну, я так вважаю, що тепер питання вичерпано, а тема закрита.
Капібари, що ж не вірно? # XA0; У наведеній вами цитаті з хелпа написано # XA0; "X Ну якщо мова йде про цілих числах то все в порядку. Хоча визначення з хелп справедливо для будь-яких чисел. Для цілих чисел краще підходити з такої позиції - N це кількість чисел в інтревале. Інтервал починається з нуля. Від 2 до N - x: = random (N-2) + 2 ;. //Random(N1..N2)=Random(N2-N1+1)+N1 Пам'ять: 0.78 MB
> Результатом роботи функції random (n) є число в межах
> [0, n-1] # XA0 ;!
Не зовсім вірно.
Random returns a random number within the range 0 <= X
Реальна формула така 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; ІМХО
можна Trunc (Random * (N2-N1 + 1)) + N1 або Round (Random * (N2-N1)) + N1, але тоді N2, теоретично, може випадати з незначно меншою ймовірністю, так як для дискретних дійсних чисел теорема про повноті континиума НЕ вполняется - хоча це потрібно прикинути точніше.
Час: 0.076 c