реклама на сайте
подробности

 
 
> Как функцией rand() получить число от 0 до 2 ?
-=Женек=-
сообщение Jan 13 2008, 11:33
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 559
Регистрация: 6-09-06
Пользователь №: 20 131



Как функцией rand() получить число от 0 до 2 ?
Да и объясните про srand() я каждый раз в цикле вызываю srand(rand()); но на работу rand() это не оказывает влияния.

короче говоря у меня есть массив Current[3], его нужно заполнить числами от 0 до 2

for (y=0;y<3;y++)
{
srand(rand());
Current[y]= что здесь?

}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Rst7
сообщение Jan 13 2008, 19:51
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Вроде нигде не промахнулся...


Таки немного промахнулся. Вообщем, примерно вот так надо делать (правда, только IAR под рукой, он конечно, зажыгает)
Код
    165          char rrr(void)
   \                     rrr:
    166          {
    167            unsigned int i=((unsigned int)rand()/(((unsigned int)RAND_MAX+1)/256))&255;
   \   00000000   ........           CALL    rand
   \   00000004   0F00               LSL     R16
   \   00000006   2F01               MOV     R16, R17
   \   00000008   1F00               ROL     R16
    168            i=i+i+i;
    169            i>>=8;
    170            return (char)i;
   \   0000000A   E023               LDI     R18, 3
   \   0000000C   9F20               MUL     R18, R16
   \   0000000E   2D01               MOV     R16, R1
   \   00000010   9508               RET


Без аппаратного умножения тоже все в порядке
Код
      4            unsigned int i=((unsigned int)rand()/(((unsigned int)RAND_MAX+1)/256))&255;
   \   00000000   ....               RCALL   rand
   \   00000002   0F00               LSL     R16
   \   00000004   2F01               MOV     R16, R17
   \   00000006   1F00               ROL     R16
   \   00000008   E010               LDI     R17, 0
      5            i=i+i+i;
      6            i>>=8;
      7            return (char)i;
   \   0000000A   2F20               MOV     R18, R16
   \   0000000C   E030               LDI     R19, 0
   \   0000000E   0F00               LSL     R16
   \   00000010   1F11               ROL     R17
   \   00000012   0F02               ADD     R16, R18
   \   00000014   1F13               ADC     R17, R19
   \   00000016   2F01               MOV     R16, R17
   \   00000018   9508               RET


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- -=Женек=-   Как функцией rand() получить число от 0 до 2 ?   Jan 13 2008, 11:33
- - IgorKossak   Функция int rand(void) возвращает целое число в ди...   Jan 13 2008, 11:50
|- - Petka   Цитата(IgorKossak @ Jan 13 2008, 14:50) Ф...   Jan 13 2008, 11:57
|- - zltigo   Цитата(IgorKossak @ Jan 13 2008, 13:50) П...   Jan 13 2008, 11:59
|- - ReAl   Цитата(IgorKossak @ Jan 13 2008, 13:50) Ф...   Jan 13 2008, 13:33
|- - zltigo   Цитата(ReAl @ Jan 13 2008, 15:33) А-а-а...   Jan 13 2008, 13:59
- - -=Женек=-   мне не нужна плавающа точка. Ваш пример не работае...   Jan 13 2008, 12:21
|- - zltigo   Цитата(-=Женек=- @ Jan 13 2008, 14...   Jan 13 2008, 12:52
- - Rst7   ЦитатаТак просто не отделаетесь - Автор хотел диа...   Jan 13 2008, 14:55
- - ReAl   Да, конечно, while( r == 3), это я глюкнул - не ус...   Jan 13 2008, 15:01
- - -=Женек=-   Господа, ну конкретный результат кто-нибудь может ...   Jan 13 2008, 15:43
|- - Сергей Борщ   Цитата(-=Женек=- @ Jan 13 2008, 17...   Jan 13 2008, 16:21
|- - zltigo   Цитата(Сергей Борщ @ Jan 13 2008, 18:21) ...   Jan 13 2008, 17:09
- - -=Женек=-   брр... а RAND_MAX тогда чему равен? И к чему эти д...   Jan 13 2008, 16:34
- - Kirill Trusov   я конечно салага но 3 вопроса 1. для какого компи...   Jan 13 2008, 16:41
- - -=Женек=-   Цитатая конечно салага но 3 вопроса 1. для какого...   Jan 13 2008, 17:35
|- - zltigo   Цитата(-=Женек=- @ Jan 13 2008, 19...   Jan 13 2008, 17:47
- - -=Женек=-   Знаете, за что я благодарен форуму? Пока дождешься...   Jan 13 2008, 18:26
|- - zltigo   Цитата(-=Женек=- @ Jan 13 2008, 20...   Jan 13 2008, 18:36
- - -=Женек=-   Я прекрасно понимаю что делаю, это вы не понимаете...   Jan 13 2008, 18:45
|- - zltigo   Цитата(-=Женек=- @ Jan 13 2008, 20...   Jan 13 2008, 18:51
|- - Сергей Борщ   Цитата(zltigo @ Jan 13 2008, 20:51) НАДО ...   Jan 13 2008, 19:14
|- - zltigo   Цитата(Сергей Борщ @ Jan 13 2008, 21:14) ...   Jan 13 2008, 19:31
|- - ReAl   Цитата(zltigo @ Jan 13 2008, 21:31) Подст...   Jan 13 2008, 19:55
|- - zltigo   Цитата(ReAl @ Jan 13 2008, 21:55) вполне ...   Jan 13 2008, 20:29
- - -=Женек=-   И что? ну пусть будет 31232, делим на 3, получаем ...   Jan 13 2008, 19:02
- - Rst7   ЦитатаПРоделайте свой код с каждым из них в письме...   Jan 13 2008, 19:04
- - Rst7   Другое дело, что деление сюда прикладывать как-то ...   Jan 13 2008, 19:19
- - ReAl   RE: Как функцией rand() получить число от 0 до 2 ?   Jan 13 2008, 19:29
- - mdmitry   Вопрос в дискуссию: кто-нибудь из авторов варианто...   Jan 13 2008, 21:44
|- - zltigo   Цитата(mdmitry @ Jan 13 2008, 23:44) Там ...   Jan 13 2008, 21:49
|- - Kirill Trusov   Цитата(mdmitry @ Jan 13 2008, 23:44) Вопр...   Jan 15 2008, 19:52
- - Elegorod   Кодint a = (new java.util.Random()...   Jan 14 2008, 19:57


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 22:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01399 секунд с 7
ELECTRONIX ©2004-2016