- 论坛徽章:
- 0
|
最近在做毕设,有一块内容是用内核定时器延迟执行某一个函数。但是延迟时间必须符合正态分布和拉普拉斯的叠加。
以上两个函数的C语言实现都可以查询到,但是都是用户态下面的浮点数运算,无法直接搬运到内核中,或者说搬运过去很麻烦我现在完全不会。
那么,内核中该如何产生这样的随机数。
下面是C语言的均匀分布实例,我认为它用到了计算机本身对浮点数精度的舍入,但是具体操作却完全不知道。
/*******************************************************************
* 求[a,b]上的均匀分布
* 输入: a--双精度实型变量,给出区间的下限
* b--双精度实型变量,给出区间的上限
* seed--长整型指针变量,*seed为随机数的种子
********************************************************************/
double uniform(double a,double b,long int*seed)
{
double t;
*seed=2045*(*seed)+1;
*seed=*seed-(*seed/1048576)*1048576;
t=(*seed)/1048576.0;
t=a+(b-a)*t;
return(t);
} |
|