伪随机数生成
测试伪随机打乱机制
根据集中数字转置方式实现排列顺序的伪打乱
实现100,000,000内的伪随机打乱
相关算法:
- 1: 数字直接替换(1-1对应的数字交换), 可逆变换
- 2: 数字位置替换(1-1位置交换), 可逆变换
- 3: 位移运算,加一个固定偏移量,越界后自动这回, 可逆变换
- 4: 镜像翻转,用总数减去当前数值, 可逆变换
- 5: 倾斜度变换,越界后折回,增加越界倍数作为修正量, 可逆变换(选取大于2的质数作为倍数)
- 6: 逆向排列, 可逆变换
- 7: 局部简化版RSA, 可逆变换,选取m和n,打乱0~m*n之间的顺序(算法待实现)
- A: 以上所有算法的随机组合
示例
var fake_random = require('./index.js');
function change (x) {
var c = new fake_random(x);
return c.changeNumber()
.changeMod(5244512)
.changeAngle(3)
.changeIndex('64215073')
.changeABS()
.changeAngle(31)
.changeMod(3244512)
.changeNumber({"0":'1','1':'8','8':'9','9':'4','4':'6','3':'5','6':'7','7':'2','2':'3','5':'0'})
.changeNumber()
.changeIndex('02134567')
.changeMod(67100987)
.changeAngle(119971)
.changeABS()
.changeDirection()
.changeNumber({"0":'1','1':'2','3':'5','6':'7','7':'6','2':'3','5':'9','9':'4','4':'8','8':'0'})
.changeAngle(137)
.changeNumber()
.number;
}
function runTestCase(){
for(var i=1;i<1000;i++){
console.log(change(i));
}
}
runTestCase();