因而可以放心 mod使用 伪随机函数. G点还是那么大.
/*
* 返回 [min, max] 区间的随机函数
* min : 起始位置
* max : 结束位置
* : 返回[min, max]区间之内的位置
*/
extern int random(int min, int max);
/*
* 返回 [min, max] 区间的随机函数
* min : 起始位置
* max : 结束位置
* : 返回[min, max]区间之内的位置
*/
int
random(int min, int max) {
assert(min < max);
// 正常情况
return rand() % (max - min + 1) + min;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
/*
* 返回 [min, max] 区间的随机函数
* min : 起始位置
* max : 结束位置
* : 返回[min, max]区间之内的位置
*/
extern int random(int min, int max);
/*
* C 基础, 使用随机函数
*/
int main(int argc, char* argv[]) {
int min = -5, max = 5;
int i = 0;
// 开始统一 初始化种子
srand((unsigned)time(NULL));
while(i < 100) {
printf("%3d ", random(min, max));
if (++i % 10 == 0)
putchar('\n');
}
system("pause");
return 0;
}
/*
* 返回 [min, max] 区间的随机函数
* min : 起始位置
* max : 结束位置
* : 返回[min, max]区间之内的位置
*/
int
random(int min, int max) {
assert(min < max);
// 正常情况
return rand() % (max - min + 1) + min;
}
基本比较稳定. 一切都在预料之中.
a. rand()伪随机函数, 存在G点. 并且可以找到
b. G点 不随着 二次 mod 取余改变.