16.11.2007, 13:29
общий
это ответ
Здравствуйте, Konstant!
Я бы, наверное, назвал свой метод "ленивым", так как в нём не происходит реальной генерации простых, да ещё и случаных, чисел.
Приступим.
Создаём .js файл с массивом содержащим простые числа (список, довольно не маленький, можно нарыть в интернете. на той же википедии, скажем).
а потом просто генерирум случайное число от ноля до "длина массива минус один"
и вытаскиваем простое число из полученого индекса.
чтобы получить случайное число в джаваскрипт можно использовать вот этот код:
var primeArrayLength = 100; // допустим, что у нас в массиве 100 простых чисел
var randomnumber=Math.floor(Math.random()*primeArrayLength);
Если нужно, чтобы последовательность "генерируемых случайных" простых чисел не содержала повторений, что может произойти, то делаем так.
по получению индекса массива берём содержимое ячейки и переносим в конец массива. Напирмер:
Имеем массив: 2,3,5,7,11,13,17,19,23
получаем индекс 4
запоминаем число 11. сдвигаем массив и дописываем число 11 в конец.
Теперь массив выглядит вот так: 2,3,5,7,13,17,19,23,11
Остальсь уменьшить переменную содержащую длину массива на 1.
primeArrayLength--;
и можно снова генерировать индекс не боясь, что снова выпадет индекс 4.
потому что даже если и выпадет, то
1) там уже совершенно иное число, и
2) число 11 тоже не выпадет так как случайный индекс не будет равнятся индексу последнего члена массива после того, как мы уменьшили переменную на 1.
Конечно, полностью избежать повторений не возможно и если генерация происходит в бесконечном цикле то, когда переменая primeArrayLength станет равнятся нулю, нужно будет вновь присвоить ей значение длины массива.
Таким образом случайность "генерирумых" простых чисел зависит от длины Вашего массива.
Удачи.
Надеюсь, что не сильно загрузил :-))