|
|
|||||
Регистрация: Oct 2010
Сообщений: 14
|
Генератор случайных чисел
Есть-ли какиенибудь способы или может классы отдельные для генерации случайных чисел?
Стандартная функция Math.random() неустраивает абсолютно. Пример: если генерить с помощью неё числа от 0 до 10, то шанс что выпадет 0 или 10 значительно ниже чем например 4,5,6. |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
|
|
|||||
[+1 16.12.11]
Регистрация: Sep 2010
Сообщений: 57
|
стандартной функции хватает:
генератор целых чисел: private function randRange(minNum:int, maxNum:int):int { return (int(Math.random() * (maxNum - minNum + 1)) + minNum); } а, мля, понял в чем проблема =\ да, походу етой функции не хватает Последний раз редактировалось deamoK; 22.10.2010 в 21:15. |
|
|||||
Регистрация: Oct 2010
Сообщений: 14
|
спасибо, понял в чем тут загвоздка. Использовал такой способ Math.round(Math.random()*10). Сделал как там написано, применил floor вместо round. Ситуация изменилась, щас генерация происходит более равномерно.
P.S. Вот что ещё по теме нашёл: http://flashgameblogs.ru/blog/actionscript/204.html Последний раз редактировалось Antony; 22.10.2010 в 23:45. Причина: xD :) исправил) |
|
|||||
.
|
Анекдот.
Один мальчик все время писал слово "пошел" через "о" (пошол). Учительница его заставила остаться после уроков и написать это слово 50 раз, чтоб запомнить. Мальчик все сделал, как велела учительница. Уходя домой, он оставил ей записку: "Я написал 50 раз слово 'пошел' и пошол домой". |
|
|||||
Регистрация: Sep 2015
Сообщений: 69
|
Поясните пожалуйста новичку каким образом получается новое случайное число по коду со ссылки данной выше. Работа генератора мне понятна, не понятно почему обращение RND.Value дает новое число, вроде бы только константы и подготовленное число.
public class RND { private var val:uint; static var maxValue:uint = 2147483647; private var k:uint = 1220703125; private var b:uint = 7; private var m:uint; public function RND(modul:uint = 2147483647) { this.m = modul; var t:Date = new Date(); var s:String = t.time.toString(); s = s.substr(s.length-3,3); this.val = uint(s); } public function get Value() { val = ((k * val + b) % maxValue); return val % m; } } |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
меняется с каждым вызовом private var val:uint;
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Регистрация: Sep 2015
Сообщений: 69
|
Но "случайность" ведь в конструкторе, а не в геттере.
|
|
|||||
Регистрация: Jan 2014
Адрес: Одесса
Сообщений: 253
|
как показала практика, лучше написать свой генератор, чем использовать стандартный.
|
Часовой пояс GMT +4, время: 18:30. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|