During a programming contest, I used the following line of code:
symbols[i] = random() & 0b11;
After the contest, when I looked into the Arduino reference, I found out random takes one or two parameters. Based upon that, I would expect the code not to compile. However, this code somehow worked as I expected. (Assigning a random number from 0 to 3) How come?
1 Answer 1
Simple: random()
isn't an Arduino function - it's a standard C function.
Function random()
long random(void)
The
random()
function computes a sequence of pseudo-random integers in the range of 0 toRANDOM_MAX
(as defined by the header file<stdlib.h>
).The
srandom()
function sets its argument seed as the seed for a new sequence of pseudo-random numbers to be returned byrand()
. These sequences are repeatable by callingsrandom()
with the same seed value.If no seed value is provided, the functions are automatically seeded with a value of 1.
-
The Arduino functions themselves, actually use the
random
function without arguments. See source codeGerben– Gerben2019年04月26日 15:40:37 +00:00Commented Apr 26, 2019 at 15:40