我试图创建一个图像文件,如下所示:
uint8_t raw_r[pixel_width][pixel_height];
uint8_t raw_g[pixel_width][pixel_height];
uint8_t raw_b[pixel_width][pixel_height];
uint8_t blue(uint32_t x, uint32_t y)
{
return (rand()%2)? (x+y)%rand() : ((x*y%1024)%rand())%2 ? (x-y)%rand() : rand();
}
uint8_t green(uint32_t x, uint32_t y)
{
return (rand()%2)? (x-y)%rand() : ((x*y%1024)%rand())%2 ? (x+y)%rand() : rand();
}
uint8_t red(uint32_t x, uint32_t y)
{
return (rand()%2)? (y-x)%rand() : ((x*y%1024)%rand())%2 ? (x+y)%rand() : rand();
}
for (y=0; y<pixel_height; ++y)
{
for (x=0; x<pixel_width; ++x)
{
raw_b[x][y]=blue(x, y);
raw_g[x][y]=green(x, y);
raw_r[x][y]=red(x, y);
}
}
Run Code Online (Sandbox Code Playgroud)
我希望随机得到一些东西(白噪声).但是,输出很有意思:
你知道原因吗?
现在,很明显它与之无关rand().
也试试这段代码: …
我需要在指定的时间间隔内生成随机数,[max; min].
此外,随机数应该在区间上均匀分布,而不是位于特定点.
Currenly我正在生成:
for(int i=0; i<6; i++)
{
DWORD random = rand()%(max-min+1) + min;
}
Run Code Online (Sandbox Code Playgroud)
从我的测试中,只有一点产生随机数.
Example
min = 3604607;
max = 7654607;
Run Code Online (Sandbox Code Playgroud)
随机数生成:
3631594
3609293
3630000
3628441
3636376
3621404
Run Code Online (Sandbox Code Playgroud)
从下面的答案:好的,RAND_MAX是32767.我在C++ Windows平台上.有没有其他方法来生成具有均匀分布的随机数?
这个问题是关于这个问题的评论
推荐的方法来初始化srand?第一条评论说srand()应该只在应用程序中调用ONCE.为什么会这样?
srand(time(null));
printf("%d", rand());
Run Code Online (Sandbox Code Playgroud)
给出一个高范围的随机数(0-32000ish),但我只需要大约0-63或0-127,但我不知道如何去做.有帮助吗?
我找不到解决方案,从中找到随机浮点数[0,a],其中a是用户定义的浮点数.
我尝试了以下内容,但它似乎无法正常工作.
float x=(float)rand()/((float)RAND_MAX/a)
Run Code Online (Sandbox Code Playgroud) 我需要使用C.我的意思是产生的随机的64位无符号整数,范围应该0以18446744073709551615.RAND_MAX是1073741823.
我在链接中找到了一些可能重复的解决方案,但答案主要是连接一些rand()结果或进行一些增量算术运算.所以结果总是18位或20位.我也希望像成果5,11,33387,不只是3771778641802345472.
顺便说一句,我真的没有这么多的C经验,但任何方法,代码样本和想法都可能是有益的.