我在C中编写一些嵌入式代码,需要使用rand()函数.不幸的是,控制器的库不支持rand().我需要一个快速的简单实现,但更重要的是空间开销很小,产生相对高质量的随机数.有谁知道使用哪种算法或示例代码?
编辑:它用于图像处理,因此"相对高质量"意味着良好的循环长度和良好的均匀特性.
我写了这个函数来获得0 ... 1之间的伪随机浮点数:
float randomFloat()
{
float r = (float)rand()/(float)RAND_MAX;
return r;
}
Run Code Online (Sandbox Code Playgroud)
但是,它总是返回0.563585.无论我运行我的控制台应用程序多少次,都是相同的数字.
编辑:
如果需要,这是我的整个申请:
#include <stdio.h>
#include <stdlib.h>
float randomFloat()
{
float r = (float)rand() / (float)RAND_MAX;
return r;
}
int main(int argc, char *argv[])
{
float x[] = {
0.72, 0.91, 0.46, 0.03, 0.12, 0.96, 0.79, 0.46, 0.66, 0.72, 0.35, -0.16,
-0.04, -0.11, 0.31, 0.00, -0.43, 0.57, -0.47, -0.72, -0.57, -0.25,
0.47, -0.12, -0.58, -0.48, -0.79, -0.42, -0.76, -0.77
};
float y[] = {
0.82, -0.69, 0.80, …Run Code Online (Sandbox Code Playgroud) 我需要C中的高质量随机数,但我不知道该怎么做.我需要能够从1-100获得数字.任何帮助或可能指向我可以找到帮助的地方.