|
|
|
|
mpa |
Вторник, 15 Ноября 2005, 11:50
|
Участник
Профиль
Группа: Участник
Сообщений: 1786
Регистрация: 11.06.2002
Пользователь №: 2401
Конфигурация
Корпус: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Здравствуйте. В языках программирования есть функция random, которая работает со случайными числами. То есть, к примеру, извлекает случайное число из массива заданных. Так вот ...объясните мне плиз, как она это делает ??? По какому принципу , алгоритму ? Спасибо.
|
|
|
|
|
Archangel |
Вторник, 15 Ноября 2005, 12:59
|
Участник
Профиль
Группа: Участник
Сообщений: 536
Регистрация: 23.10.2004
Из: Russia, Odintsovo
Пользователь №: 7483
Конфигурация
Корпус: CoolerMaster+FSP 1000W Процессор: Другой Материнская плата: ASUS striker II Formula Оперативная память: DDR2 2x2048Mb Видеокарта: ASUS 8800 gtx Жесткий диск (винчестер): Baracuda 200Gb SATA; WD 160Gb SATAII Дисковод: Нет дисковода CD/DVD: DVD+-RW Optiark Модем: больше не использую =) Сетевой адаптер: 1Gb onboard Звуковая плата: OnBoard Монитор: 22" SyncMaster T220G Операционная система: Win7 x64 Максимальная Прочее: --
|
Если я не ошибоюсь , то нет никакого алгоритма. Просто как "рука" взяла. Она на то и называется "случайный" это ИМХО конечно.
|
|
|
|
|
mpa |
Вторник, 15 Ноября 2005, 13:01
|
Участник
Профиль
Группа: Участник
Сообщений: 1786
Регистрация: 11.06.2002
Пользователь №: 2401
Конфигурация
Корпус: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
"взять" может человек....и то он пользуется какими-то своими критериями... для компьютера это неприменимо... Есть база данных - наш массив Есть база знаний - (в нашем случае) принципы, по которым число извлекают. Что заложено в базу знаний, какие критерии ?
|
|
|
|
|
Квазимодо |
Вторник, 15 Ноября 2005, 13:48
|
Участник
Профиль
Группа: Участник
Сообщений: 162
Регистрация: 25.11.2003
Пользователь №: 6223
Конфигурация
Корпус: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
mpa, тебя интересуют генераторы случайных чисел? Вот здесь есть небольшой обзор.
--------------------
Я долго учился на чужих ошибках, и теперь мои собственные ошибки не хуже, чем у других.
|
|
|
|
|
Levon |
Вторник, 15 Ноября 2005, 13:58
|
Участник
Профиль
Группа: Участник
Сообщений: 780
Регистрация: 16.09.2003
Из: Ереван, Армения
Пользователь №: 5872
Конфигурация
Корпус: HP Материнская плата: -- Оперативная память: 512 Мб Видеокарта: Intel(R) 82865G Graphics Controller Жесткий диск (винчестер): WDC WD400BB-60DGA0 37.27 GB (40 015 503 360 bytes) Дисковод: 3.5" CD/DVD: CD Модем: -- Сетевой адаптер: 3Com 3C905TX-based Ethernet Adapter (Generic), Broadcom NetXtreme Gigabit Ethernet for hp Звуковая плата: SoundMAX Integrated Digital Audio Монитор: LCD HP 1730, 19" Операционная система: Windows XP Pro SP1, Winsows 2000 AS SP4, FreeBSD 5.2.1 Прочее: --
|
Цитата(mpa @ Сегодня, 12:50) То есть, к примеру, извлекает случайное число из массива заданных. Вообще-то не так .... К примеу в C/C++ случайное число выдается в пределах 0-1, а сделать этот предел к примеру 250-487 это уже же дело техники .... и на самом деле это не совсем случайное число,а псевдослучайное ..... так как расчитывается следующим способом ....к примеру берется какое либо начальное значение, прибавляется число в таком то регистре памяти, умножается на число находящееся в таком то регистре памяте, сдвиг на столько позиций сколько чисел в таком то регистре памяти ... и тд. и тп.) ...
--------------------
- Никогда не стоит недооценивать предсказуемость глупости. "Большой Куш/Sntach"
|
|
|
|
|
mpa |
Вторник, 15 Ноября 2005, 14:06
|
Участник
Профиль
Группа: Участник
Сообщений: 1786
Регистрация: 11.06.2002
Пользователь №: 2401
Конфигурация
Корпус: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
О!.. и почитал, и послушал... таки псевдослучайное... Значится для ботов в играх типа Neverlands вряд ли реализовали сложный алгоритм "случайных" ударов блоков. (я че парюсь собственна - мне ап бы брать ..а боты крутятся не попасть ...буду их вычислять ) От из-за такой ерунды и возникают "умные" вопросы ) Всем спасибо.
|
|
|
|
|
Archangel |
Вторник, 15 Ноября 2005, 14:20
|
Участник
Профиль
Группа: Участник
Сообщений: 536
Регистрация: 23.10.2004
Из: Russia, Odintsovo
Пользователь №: 7483
Конфигурация
Корпус: CoolerMaster+FSP 1000W Процессор: Другой Материнская плата: ASUS striker II Formula Оперативная память: DDR2 2x2048Mb Видеокарта: ASUS 8800 gtx Жесткий диск (винчестер): Baracuda 200Gb SATA; WD 160Gb SATAII Дисковод: Нет дисковода CD/DVD: DVD+-RW Optiark Модем: больше не использую =) Сетевой адаптер: 1Gb onboard Звуковая плата: OnBoard Монитор: 22" SyncMaster T220G Операционная система: Win7 x64 Максимальная Прочее: --
|
Levon, Цитата К примеу в C/C++ случайное число выдается в пределах 0-1, а сделать этот предел к примеру 250-487 это уже же дело техники ... А можешь ниписать код этого??
|
|
|
|
|
Levon |
Вторник, 15 Ноября 2005, 15:16
|
Участник
Профиль
Группа: Участник
Сообщений: 780
Регистрация: 16.09.2003
Из: Ереван, Армения
Пользователь №: 5872
Конфигурация
Корпус: HP Материнская плата: -- Оперативная память: 512 Мб Видеокарта: Intel(R) 82865G Graphics Controller Жесткий диск (винчестер): WDC WD400BB-60DGA0 37.27 GB (40 015 503 360 bytes) Дисковод: 3.5" CD/DVD: CD Модем: -- Сетевой адаптер: 3Com 3C905TX-based Ethernet Adapter (Generic), Broadcom NetXtreme Gigabit Ethernet for hp Звуковая плата: SoundMAX Integrated Digital Audio Монитор: LCD HP 1730, 19" Операционная система: Windows XP Pro SP1, Winsows 2000 AS SP4, FreeBSD 5.2.1 Прочее: --
|
Archangel, K примеру .. требуется число в пределах 250-487 кстати я там неправильно указал ... на самом деле rand возвращал значение в пределах 0 - max(int)=32768 (сказывается долгая разлука с C++ :-) )
#include <stdlib.h> #include <time.h> #include <iostream.h>
void main () { srand ( time(NULL) ); int ramdomNumber = rand()%237+250; cout<<randomNumber<<endl; }
2mpa, если запустишь эту программу без строчки srand( time(NULL) ); то получишь те псевдослучайные числа о которых я говорил .... тоесть все время будет возвращаться одно и тоже число ..... но если в качестве параметра srand будешь задавать разные числа .. то для каждого числа будешь получать разные случайные числа .... а чтобы каждый раз не задавать начальное значение в качестве параметра srand задается колличество секунд прошедших с 1970 года (time(null)) .....
--------------------
- Никогда не стоит недооценивать предсказуемость глупости. "Большой Куш/Sntach"
|
|
|
|
|
Archangel |
Четверг, 17 Ноября 2005, 22:36
|
Участник
Профиль
Группа: Участник
Сообщений: 536
Регистрация: 23.10.2004
Из: Russia, Odintsovo
Пользователь №: 7483
Конфигурация
Корпус: CoolerMaster+FSP 1000W Процессор: Другой Материнская плата: ASUS striker II Formula Оперативная память: DDR2 2x2048Mb Видеокарта: ASUS 8800 gtx Жесткий диск (винчестер): Baracuda 200Gb SATA; WD 160Gb SATAII Дисковод: Нет дисковода CD/DVD: DVD+-RW Optiark Модем: больше не использую =) Сетевой адаптер: 1Gb onboard Звуковая плата: OnBoard Монитор: 22" SyncMaster T220G Операционная система: Win7 x64 Максимальная Прочее: --
|
Levon, А можешь тоже самое тока без iostream А с stdio ???
|
|
|
|
|
Levon |
Пятница, 18 Ноября 2005, 8:38
|
Участник
Профиль
Группа: Участник
Сообщений: 780
Регистрация: 16.09.2003
Из: Ереван, Армения
Пользователь №: 5872
Конфигурация
Корпус: HP Материнская плата: -- Оперативная память: 512 Мб Видеокарта: Intel(R) 82865G Graphics Controller Жесткий диск (винчестер): WDC WD400BB-60DGA0 37.27 GB (40 015 503 360 bytes) Дисковод: 3.5" CD/DVD: CD Модем: -- Сетевой адаптер: 3Com 3C905TX-based Ethernet Adapter (Generic), Broadcom NetXtreme Gigabit Ethernet for hp Звуковая плата: SoundMAX Integrated Digital Audio Монитор: LCD HP 1730, 19" Операционная система: Windows XP Pro SP1, Winsows 2000 AS SP4, FreeBSD 5.2.1 Прочее: --
|
iostream только для cout если хочешь использовать stdio.h то вывод надо сделать командой prinf("%i \n", randomNumber);
--------------------
- Никогда не стоит недооценивать предсказуемость глупости. "Большой Куш/Sntach"
|
|
|
|
|
Archangel |
Пятница, 18 Ноября 2005, 17:08
|
Участник
Профиль
Группа: Участник
Сообщений: 536
Регистрация: 23.10.2004
Из: Russia, Odintsovo
Пользователь №: 7483
Конфигурация
Корпус: CoolerMaster+FSP 1000W Процессор: Другой Материнская плата: ASUS striker II Formula Оперативная память: DDR2 2x2048Mb Видеокарта: ASUS 8800 gtx Жесткий диск (винчестер): Baracuda 200Gb SATA; WD 160Gb SATAII Дисковод: Нет дисковода CD/DVD: DVD+-RW Optiark Модем: больше не использую =) Сетевой адаптер: 1Gb onboard Звуковая плата: OnBoard Монитор: 22" SyncMaster T220G Операционная система: Win7 x64 Максимальная Прочее: --
|
Levon, спасибо!!
|
|
|
|
|
nekto |
Суббота, 24 Декабря 2005, 12:21
|
Участник
Профиль
Группа: Ожидающий активации
Сообщений: 1
Регистрация: 24.12.2005
Пользователь №: 10262
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
rand = (x + y*rand) mod m где x, y, m удовлетворяющие некоторым требованиям, для того чтобы последовательность полученных чисел была максимально длинная. Подробности про требования можно найти: Д.Кнут. "Искусство программирования"
|
|
|
|
|
|
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
|
0 Пользователей:
|
|
© Copyright by WinCity.Ru 2001 - 2008 | Обратная связьУслуги веб-хостинга предоставлены компанией MTW.RU
|
|