Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.04.2008, 01:21
zorom вне форума Посмотреть профиль Отправить личное сообщение для zorom Найти все сообщения от zorom
  № 1  
Ответить с цитированием
zorom

Регистрация: Mar 2008
Сообщений: 2
По умолчанию спросить:генератор случайных чисел AS2

Для создания Flash-викторины нужен генератор случайных чисел с неповторяющимися данными AS2. Прошу помощи.

Старый 24.04.2008, 02:52
Vertax вне форума Посмотреть профиль Отправить личное сообщение для Vertax Найти все сообщения от Vertax
  № 2  
Ответить с цитированием
Vertax

Регистрация: Oct 2005
Сообщений: 207
Если диапазон достаточный, а количество запусков ограничено:
Код:
var RNDVALUES = []; //Здесь храним числа

RND = function (MIN, MAX)
{
	//Получаем число
	var RETVAL = Math.floor(Math.random() * (MAX - MIN) + MIN);
	//Проверяем число на уникальность
	for (var i = 0; i < RNDVALUES.length; i++) 
	{
		if (RNDVALUES[i] == RETVAL) 
		{
			RETVAL = RND (MIN, MAX);
			break;
		}
	}
	return RETVAL;
}

//Для примера
onEnterFrame = function ()
{
	RNDVALUES.push(RND(0, 100));
	trace (RNDVALUES);
}

Старый 24.04.2008, 10:05
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 3  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Vertax, а зачем там нужна конструкция
Код:
(MAX - MIN) + MIN
ведь можно было б просто написать max (но тогда не учитывается нижняя граница)

ЗЫ. Надеюсь никто не против, что встрял в чужую тему, просто стало интересно.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 24.04.2008, 10:24
qazwsx вне форума Посмотреть профиль Найти все сообщения от qazwsx
  № 4  
Ответить с цитированием
qazwsx
Banned
[+5 15.02.09]
[++5 15.02.09]

Регистрация: Mar 2008
Адрес: Krasnoyarsk
Сообщений: 587
У тебя вызов функции при выбори чисел 0-1000 происходит 3500-5000+ раз .
Если задать диапазон чисел из каторых мы будем делать выбор например 0-100.
И при выборе числа исключать его из этого диапазона, то будет гораздо проще как мне кажется .

Старый 24.04.2008, 14:06
Vertax вне форума Посмотреть профиль Отправить личное сообщение для Vertax Найти все сообщения от Vertax
  № 5  
Ответить с цитированием
Vertax

Регистрация: Oct 2005
Сообщений: 207
Цитата:
Vertax, а зачем там нужна конструкция
Дык, если не с ноля начинать нужно, а например с 500.
А формула Math.random() * (MAX - MIN) + MIN. Математика блин.

Цитата:
У тебя вызов функции при выбори чисел 0-1000 происходит 3500-5000+ раз
Читай внимательно пост. Я сразу написал, что если диапазон достаточный, а количество запусков ограничено.

Цитата:
Если задать диапазон чисел из каторых мы будем делать выбор например 0-100.
И при выборе числа исключать его из этого диапазона, то будет гораздо проще как мне кажется
Если чисел так мало, то да, в твоих словах есть смысл. Но... ты когда нибудь участвовал (или просто смотрел) в различных розыгрышах и тд. Очень часто цифры 6+ знаков, а запусков всего 20-100.

Старый 24.04.2008, 14:28
qazwsx вне форума Посмотреть профиль Найти все сообщения от qazwsx
  № 6  
Ответить с цитированием
qazwsx
Banned
[+5 15.02.09]
[++5 15.02.09]

Регистрация: Mar 2008
Адрес: Krasnoyarsk
Сообщений: 587
Неважно сколько чисел главное чтобы хватило памяти. Способ каторый я описал оптимальней в любом случае...
Правильнее просто геерировать рандомный диапазон и из него делать выбор

Старый 24.04.2008, 16:23
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 7  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
согласен с qazwsx
мне кажется так будет наиболее оптимально

Код:
var count:Number = 100;

var arr:Array = new Array();
for (var i:Number = 0; i<count; i++) {
	arr.push(i);
}

function getRnd() {
	return arr.splice(Math.random()*(arr.length-1), 1);
}

for (var i:Number = 0; i<count; i++) {
	trace(getRnd());
}

Старый 26.04.2008, 19:45
zorom вне форума Посмотреть профиль Отправить личное сообщение для zorom Найти все сообщения от zorom
  № 8  
Ответить с цитированием
zorom

Регистрация: Mar 2008
Сообщений: 2
всем спасибо

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:06.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.