Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/33: Рейтинг темы: голосов - 33, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 204
1

случайное число

06.04.2013, 00:12. Показов 6547. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
как в Winavr сгенерировать случайное число? необходимо чтобы случайное число принимало только одно из 4 значений,
сверх точность ни к чему. У кого какие идеи ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2013, 00:12
Ответы с готовыми решениями:

Компьютер задает случайное число от 1 до 100 человек должен угадать число
Вот задали задачу учусь в 10 классе уже поставили 4 двойки за задачи,Обьясните решение и что к чему...

Программа генерирует случайное двухзначное число до тех пор пока не найдется нечетное число
Программа генерирует случайное двухзначное число до тех пор пока не найдется нечетное число. После...

Структурные операторы. Программа генерирует случайное число до тех пор пока не найдется нечетное число
Две задачки, помогите пожалуйста. Заранее спасибо ^_^ 1. Программа генерирует случайное...

Как умножить число на случайное число от 1 до 9?
Помогите пожалуйста решить задачку на Python. Нужно конкретное число умножить на случайное число в...

Написать программу, реализует следующую игровую ситуацию: компьютер задает случайное целое число в интерали от 1 до 10, а мне нужно это число угадать
Написать программу, реализует следующую игровую ситуацию: компьютер задает случайное целое число в...

15
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
06.04.2013, 00:52 2
romd() & 0x03
0
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
06.04.2013, 02:12 3
Не знаю, как там раскладывается romd() внутри.
Но можно настроить любой таймер и брать его значение. А потом действительно логически множить на 0x03.
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 204
06.04.2013, 02:23 4
таймеры постоянно заняты в работе.
Цитата Сообщение от _pv
romd() & 0x03
спасибо разобрался, очень удобная и компактная функция
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
06.04.2013, 03:10 5
только неплохо бы инициализировать sromd каким-нибудь по настоящему случайным числом
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
06.04.2013, 03:22 6
только неплохо бы инициализировать sromd каким-нибудь по настоящему случайным числом
Ну-ка предложите это самое настоящее случайное число. Теорию хаоса изучаете?
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
06.04.2013, 03:41 7
ну, например, 43 :)

я про то что без инициализации последовательность всегда будет одна и та же.
хоть какое-то более менее случайное число для инициализации можно взять из младших разрядов из АЦП или из таймера.
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
06.04.2013, 03:59 8
<Изображение удалено>
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
06.04.2013, 15:19 9
Цитата Сообщение от _pv
я про то что без инициализации последовательность всегда будет одна и та же.
хоть какое-то более менее случайное число для инициализации можно взять из младших разрядов из АЦП или из таймера.
Из таймера тоже будет одна и та же инициализация, если делать на автомате. А вот если попросить юзера нажать кнопку и снять младшие разряды таймера во время нажатия - тогда да, romdom гарантируется (только частоту таймера выбрать повыше).
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
06.04.2013, 15:25 10
Цитата Сообщение от OtyxPM
Из таймера тоже будет одна и та же инициализация, если делать на автомате.
очевидно что таймер надо читать по какому-либо не синхронному с работой программы событием.
это может быть и другой таймер (часовой кварц), отношение частот будет довольно случайным в младших разрядах.
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
06.04.2013, 15:27 11
А чем вам АЦП не угодил?

Если уж с таймером - заюзайте в качестве второго таймера WDT (если он может давать прерывание)
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
06.04.2013, 15:36 12
АЦП иногда отсутствует.
а так, конечно, проще всего брать из АЦП.
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 204
06.04.2013, 20:01 13
годится одно и тоже при старте, ранд мне нужен для игры на дисплее, все равно всех последовательностей игрок не запомнит. Вот как бы только реализовать процент ранда? например 1,2,3 с 99% а 4 с 1%
пока как то так

char x;
x = (romd() & 0x03);
void func (x)
{
...
...
...
}
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
06.04.2013, 20:04 14
Ну то есть
1 - 33%
2 - 33%
3 - 33%
4 - 1%
Так и делать:
допустим выдается число от 0 до 99.
if (romdom < 33) return 1;
if (romdom < 66) return 2;
if (romdom < 99) return 3;
return 4;
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 204
06.04.2013, 20:09 15
Ага, спасибо пойду приделывать
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
06.04.2013, 20:12 16
Код
const int prob[]={99,99,99,1}
int r = (long)romd()) * (prob[0]+prob[1]+prob[2]+prob[3] - 1) / RAND_MAX;
if (r < prob[1]) {1}
else if (r < prob[1]+prob[2]) {2}
else if (r < prob[1]+prob[2]+prob[3]) {3}
else {4}
0
06.04.2013, 20:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2013, 20:12
Помогаю со студенческими работами здесь

Случайное число
Господа. не могу понять в чем ощибка mysqli_query($db, &quot;UPDATE `game1` SET `num` =...

Случайное число
Здравствуйте. Мне необходимо при запуске программы генерировать число и выводить строчку из...

Случайное число
Добрый всем день, у меня возник вопрос существует ли у PHP стандартная функция случайного числа?...

Случайное число
Вот мне надо случайные числа в диапазоне 1-4 пишу for (int j=0;j&lt;10;j++){ srand(time(NULL));...

Случайное число
Помогите все поисковики облазил. Мне нужен скрипт JAVA и вот что он должен делать, допустим есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru