Почему бы не дать rand () никаких случайных значений в IDE симулятора PI C? - PullRequest
0 голосов
/ 31 марта 2020

Я использовал PI C IDE симулятора с PIC16F886, и значение random всегда равно 0 при каждом запуске кода. Похоже, rand() не работает. Я не могу понять, что случилось.

Вот код

#include <stdlib.h>
#include <time.h> 
#include <stdio.h> 

#FUSES NOWDT                    
#FUSES PUT                      
#FUSES NOMCLR                  
#FUSES NOPROTECT                
#FUSES NOCPD                   
#FUSES BROWNOUT               
#FUSES IESO                     
#FUSES FCMEN                  
#FUSES NOLVP                
#FUSES NODEBUG                  
#FUSES NOWRT                   
#FUSES BORV40
#FUSES RESERVED
#FUSES INTRC_IO

#use delay(clock=8M)

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
void main()
{
   int myInput;
   int random;
   random= rand()%5;  
   printf ("type a character\r\n"); 
   printf(" %d ", random); 
   while(1) {
      myInput = getc();
      printf("You typed - %d\r\n", myInput);  
      if(myInput>random){
          printf("too high\n"); 
      }else if(myInput<random){
          printf("too low");
     }
   }
}


1 Ответ

2 голосов
/ 01 апреля 2020

Вы должны были инициализировать начальную точку для rand() с помощью вызова функции srand().
Существует действительно хороший пример в xc8 руководстве пользователя на стр. 399.

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void main (void){
    time_t toc; 
    int i;   
    time(&toc);
    srand((int)toc);
    for(i = 0 ; i != 10 ; i++)
        printf("%d\t", rand()); 
    putchar(’\n’);
}
...