随机产生100000000个取值范围为[0,232-1]的数据,然后让用户输入一个数据,判断用户输入的数据是不是包含在前面随机产生的数据中。
求高手解答!
[解决办法]
#include <stdio.h>int main(int argc, char *argv[]){ int i, d; int r[232] = {0}; srand(time(0)); for (i = 0; i < 100000000; i++) { r[rand()%232]++; } scanf("%d", &d); if (d < 0 || d >= 232 || 0 == r[d]) { printf("out!\n"); } else { printf("bingo!"); } return 0;}
[解决办法]
#include <stdio.h>#include <stdlib.h>#include <time.h>unsigned long ulrand(void) { return ( (((unsigned long)rand()<<24)&0xFF000000ul) |(((unsigned long)rand()<<12)&0x00FFF000ul) |(((unsigned long)rand() )&0x00000FFFul));}int i;unsigned long ul;void main() { srand(time(NULL)); for (i=0;i<10;i++) { ul=ulrand(); printf("%010lu 0x%08x\n",ul,ul); }}//2337588057 0x8b54c359//1977377429 0x75dc6295//3607316769 0xd7034921//0009828482 0x0095f882//3350859779 0xc7ba1003//0945794621 0x385fae3d//3400869024 0xcab524a0//3097846779 0xb8a563fb//4287421124 0xff8cdac4//3934016258 0xea7c5302