可是经过反复测试,是生成的16位的随机数..
#include "stdafx.h"
#include <stdlib.h>
#include <time.h>
#include "conio.h"
void generate(unsigned int *R)
{
int i;;
time_t t;
srand((unsigned) time(&t));
printf("Ten random numbers:\n");
for(i=0; i<32; i++)
{
R[i]=rand()*rand();
printf("%x\n", R[i]);
}
}
int main(void)
{
unsigned int *R;R=new unsigned int[32];
generate(R);
getch();
return 0;
}
#include "stdafx.h"
#include <stdlib.h>
#include <time.h>
#include "conio.h"
void generate(unsigned int *R)
{
int i;;
time_t t;
srand((unsigned) time(&t));
printf("Ten random numbers:\n");
for(i=0; i<32; i++)
{
R[i]=rand()*rand();
printf("%x\n", R[i]);
}
}
int main(void)
{
unsigned int *R;R=new unsigned int[32];
generate(R);
getch();
return 0;
}
Ten random numbers:
89d9ea0
107eb108
12af1c0
1e3488ac
5e86a7f
72acb6f
1a5928a
317f883
47d81e4
3a6d988
11f9e460
20ba7cc
30f778da
1d0dcaf8
f54d434
6f70c74
d06eb7e
28d82fa9
1fd1db8d
19035106
d4623e0
2be5805
1beded80
95350a7
20727cbe
34090086
2e1ea8d8
8cc425
225505e7
20806e0
24b2dbb6
e6f8c10
这个结果是rand()*rand()得到的
下面是rand()得到:
Ten random numbers:
5eb4
2629
412e
5861
64b1
69fc
3b9c
41a7
2070
4c46
5f5f
54b7
5176
4ad0
3e30
7b36
1e66
6fb
73fd
2129
43bd
9a4
6b3c
3800
1abf
7e4a
3b7f
6ad3
cb2
2973
5648
67eb
谁能给我解释下
楼主看看rand()的返回类型就知道了.
rand()返回值就是一个随机的,楼主怎么可能要rand()返回一个一定达到32bit的数.
如果想要 unsigned int 可以自己升级它们。
R[i] = (unsigned int)intrand() * (unsigned int)rand();
for(i=0; i<32; i++)
{
R[i] = (unsigned int)intrand() * (unsigned int)rand();
printf("%x\n", R[i]);
}
//-------------------------------------------------//
若这样还不行,那就>>>
unsigned int ra1;
unsigned int ra2;
..........
for(i=0; i<32; i++)
{
ra1 = rand();
ra2 = rand();
R[i] = ra1 * ra2;
printf("%x\n", R[i]);
}
这个所有编译器都能很好的处理。
如果想要 unsigned int 可以自己升级它们。
R[i] = (unsigned int)intrand() * (unsigned int)rand();
for(i=0; i<32; i++)
{
R[i] = (unsigned int)intrand() * (unsigned int)rand();
printf("%x\n", R[i]);
}
//-------------------------------------------------//
若这样还不行,那就>>>
unsigned int ra1;
unsigned int ra2;
..........
for(i=0; i<32; i++)
{
ra1 = rand();
ra2 = rand();
R[i] = ra1 * ra2;
printf("%x\n", R[i]);
}
这个所有编译器都能很好的处理。
楼主需要的是32位的随机数,而不是32个随机数,不知道楼上何出此CODE。
另外,随机变量X,Y均在[0,RAND_MAX]上服从均匀分布,X*Y的分布情况如何呢?是在[0,RAND_MAX*RAND_MAX]服从均匀分布吗?
如果是的话如何证明呢?
如果不是的话,这种做法是否欠妥呢