Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Интересный вопрос...

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
modulo

Цитата:
у меня была функция перетусовки колоды в ней естественно сначала прописано randomize(), а потом где надо random()

 

Код:
 
так?
 
shuffle() {
 cardKind = random();
 cardNum = random();
}
 
main() {
 randomize();
 do {  //gameloop
  ...
  shuffle()
  ...
 }
}
 
или так?
 
shuffle() {
 randomize();
 cardKind = random();
 cardNum = random();
}
 
main() {
 do {  //gameloop
  ...  
  shuffle()
  ...
 }
}
 

 
во втором случае и будет то, что ты описываешь...

Всего записей: 25734 | Зарегистр. 06-12-2002 | Отправлено: 15:04 28-01-2005
modulo



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
у меня второй вариант, но почему!!????
какая разница????
я думал наоборот, чем больше будет выполняться randomize, тем случайнее будет комбинация

Всего записей: 228 | Зарегистр. 03-07-2004 | Отправлено: 15:15 28-01-2005
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да потому что в этом случае ты всегда приводишь генератор в начальное состояние...
 
попробуй код (сделай два экзюка):

Код:
 
void main () {
  int i;
  randomize();
  for (i = 0; i < 10; i++)
    printf("%d\n", (int)random(100)+1);
}
 

 

Код:
 
void main () {
  int i;
  for (i = 0; i < 10; i++) {
    randomize();
    printf("%d\n", (int)random(100)+1);
  }
}
 

 
в первом случае -- рандом, а во втором?
позапускай первый ехе несколько раз -- все равно рандом...

Всего записей: 25734 | Зарегистр. 06-12-2002 | Отправлено: 16:33 28-01-2005 | Исправлено: akaGM, 16:34 28-01-2005
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
modulo
 
И что же? Все равно повторяются?

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 17:35 28-01-2005
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
!оффтоп этого трейда...
 
TheChampion
я тебе немного инфы нарыл, глянь если еще не видел...
http://forum.ru-board.com/topic.cgi?forum=33&topic=4499#1

Всего записей: 25734 | Зарегистр. 06-12-2002 | Отправлено: 17:58 28-01-2005
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
modulo
Я не нашел функцию randomize в стандарте, но там написано, что
 
2 The rand function computes a sequence of pseudo-random integers in the range 0 to
RAND_MAX.
 
а также
 
2 The srand function uses the argument as a seed for a new sequence of pseudo-random
numbers to be returned by subsequent calls to rand. If srand is then called with the
same seed value, the sequence of pseudo-random numbers shall be repeated. If rand is
called before any calls to srand have been made, the same sequence shall be generated
as when srand is first called with a seed value of 1.
 
akaGM
Спасибо, я видел

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 19:08 28-01-2005
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
на всякий случай...
 
стандартными считаются
int rand() и (реже) long lrand()
void srand() -- пускач
 
а random randomize -- Борландовские макросы (речь шла о написании программы под Билдером)

Всего записей: 25734 | Зарегистр. 06-12-2002 | Отправлено: 20:17 28-01-2005
modulo



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
короче я всё-равно сделал свой отличный рандомайзер и наплевать на эти стандартные ф-ии, как говорится "if you want something done, do it yourself"

Всего записей: 228 | Зарегистр. 03-07-2004 | Отправлено: 09:57 29-01-2005
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
modulo

Цитата:
короче я всё-равно сделал свой отличный рандомайзер

Проверял? Соседние значения вправду не коррелируют? (см. Кнут, т. 2)

Цитата:
и наплевать на эти стандартные ф-ии, как говорится "if you want something done, do it yourself"

А STL пробовал переписать?

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 11:08 29-01-2005
modulo



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Соседние значения вправду не коррелируют?

издеваешься?

Всего записей: 228 | Зарегистр. 03-07-2004 | Отправлено: 11:28 29-01-2005
MoKC0DeR



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
modulo
Не действительно инетересно проходит ли твой алгоритм тесты на случайность. Если не проходит, то ценность его стремится к 0

Всего записей: 510 | Зарегистр. 31-03-2004 | Отправлено: 12:21 29-01-2005
modulo



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
он обрабатывает текущее время (секунды, минуты, часы), у меня их несколько вариаций и в разных местах я использую разные
просто в карточной игре компьютерный интеллект часто должен содержать элемент случайности, поэтому тут без нормального рендомайзера не обойтись
из авторских соображений (или комплексов) код всё равно вам не покажу

Всего записей: 228 | Зарегистр. 03-07-2004 | Отправлено: 12:47 29-01-2005
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
modulo

Цитата:
 издеваешься?

Нет, спрашиваю. Просто если коэффициент корреляции близок к 1, то это никакая не случайная последовательность. А вот если она близка к 0, то и вправду случайная.
 
Просто по определению.

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 15:52 29-01-2005
Tartrout



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
короче я всё-равно сделал свой отличный рандомайзер и наплевать на эти стандартные ф-ии, как говорится "if you want something done, do it yourself"

 
Хозяйке на заметку.
 
Хороший собственный рандомайзер можно из любого готового исходника криптографического алгорифма наподобие AES. Если шифровать последовательные натуральные числа умноженные на "затравку", например.

Всего записей: 316 | Зарегистр. 24-07-2002 | Отправлено: 13:04 31-01-2005
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

Чепуха всё это, для карточной игры запросто можно было бы обойтись стандартными функциями. А если смотреть с точки зрения "истинно случайной величины" то ваше творение столь же случайно как и стандартные ф-ии и не выдерживает никакой критики. В общем очередной "велосипед" За приемлемо случайными числами - к криптографам, как сказал Tartrout

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 13:41 31-01-2005 | Исправлено: FuzzyLogic, 13:44 31-01-2005
p245

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Генераторы случайных чисел
 
Псевдослучайной последовательностью называется такая последовательность, которая с точки зрения пользовательских свойств представляется нам случайной, т.е. такая последовательность, которая на самом деле не случайная , но с точки зрения является случайной.
Свойства псевдослучайной последовательности.
1.Периодичность
2.1. Функция   распределения      статистические свойства ф-йй.    
2 .Дисперсия
Вер-ть  P(X)dx=dF(X)  или P(X)=dF/dX  
3.Слабая автокорреллированность т.е. следующее значение должно слабым образом связано с предыдущим
Пр: Генератор  Фон Неймана
X1=63   63^2 =3969  отбрасываем 2 крайних
X2=96           =9126
X3=21           =0441
X4=44           =1936
X5=93           =8649
Пр: Линейный конгруэнтный генератор случайных чисел
X0, a, c, m –целые
Xn+1=F(Xn); Xn+1=(aXn+c) mod m
 
Пр: Генератор случайных чисел на основе последовательности Ферхюльста.
Xn+1=4|\Xn(1-Xn); F(x)=4|\X(1-X)
При |\>3.75/4   Последовательность будет хаотической т.е.  стремиться к бесконечности
В компьютере всё что ведёт себя более или менее периодично ( время)  
 
 
Добавлено:
Если кому интересно то пишите почту могу скинуть лекции по компьютерному моделированию. Тут есть немного про генераторы случайных чисел+)

Всего записей: 12 | Зарегистр. 21-01-2005 | Отправлено: 04:34 02-02-2005 | Исправлено: p245, 04:37 02-02-2005
Sept



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
p245

знаешь что нибудь про генератор "белого" шума?

Всего записей: 40 | Зарегистр. 08-02-2006 | Отправлено: 12:04 26-06-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Интересный вопрос...


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru