Thank you Michael, Your explanation was quite clear to me, I didn't realize of the problem with the i=i+2 that you point out, maybe because of writing loops automatically without much thinking. I also prefer the code you provide me, that way I don't have to mess with odds and evens.
Thanks again! 2010/2/5 MIchael Schippling <[email protected]>: > You indexing in that for() loop isn't right. > You need to add 2 to i on every pass or > increment it in the second [i+1] access, > and assuming "size" is the length of "array" > you then shouldn't divide by 2 either... > > Or you can just throw away the top 16 bits of > each rand16 to make it easier: > > uint8_t array[size]; > for (i=0; i < size; i++) > { > aux = call Random.rand16(); > array[i] = aux & 0xff; > } > > I would do some study of the actual values > produced by rand16() to see how random each > byte is as well. I've seen (very) simple > pseudo-random generators that have large > jumps between values that are not as random > as one might like. > > MS > > > > Ruben Rios wrote: >> >> Hello everyone, >> >> I have seen the Random interface generates random numbers of 16 or 32 >> bits long. How can I generate a 8 bit random numbers array? >> >> void generateRandomArray(uint8_t * array, uint8_t size) >> { >> uint8_t i; >> uint16_t aux; >> uint8_t *p = (uint8_t *)&aux; >> >> for (i=0; i < size / 2; i++) >> { >> aux = call Random.rand16(); >> array[i] = *p; //Store the MSB >> array[i+1] = *(p+1); //Store the LSB >> } >> } >> >> I am not very good at pointers that's why I don't know if this works >> fine. By the way, I guess the array contents are modified within the >> function but these are also valid outside, right? >> >> Thanks in advance > -- Ruben _______________________________________________ Tinyos-help mailing list [email protected] https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
