Cesium API:Cesium.Math.setRandomNumberSeed(seed)

 在介绍题目中的API之前,有必要先解释一下Cesium.Math.nextRandomNumber()(以下简称:随机数生成器),该API的作用是生成一个位于[0, 1)之间的浮点数,通过Mersenne Twister算法百科词条)实现,该算法中的seed参数可以保证生成的随机数具有可预测性,这里说的可预测性是指相同的种子(seed值)所产生的随机数是相同的,如果不设置seed值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同知乎原文)。

Cesium官方文档对Cesium.Math.setRandomNumberSeed(seed)(以下简称:seed设置器)的解释是:设置随机数生成器所用的seed参数。在调用随机数生成器之前,调用seed设置器可以控制所生成的随机数。

以下代码生成的随机数是固定的。

Cesium.Math.setRandomNumberSeed(10);
let first = Cesium.Math.nextRandomNumber();
console.log(first);

// 0.7713206431362778

Cesium.Math.setRandomNumberSeed(0);
let second = Cesium.Math.nextRandomNumber();
console.log(second);

// 0.548813502304256

关于作用域

测试代码段一:

function generateRandom() {
    Cesium.Math.setRandomNumberSeed(10);
    let out = Cesium.Math.nextRandomNumber();

    for (let i = 0; i<3; ++i){
        let temp = Cesium.Math.nextRandomNumber();
        console.log(temp);
    }

    console.log(out);
}

generateRandom();

// 0.2987611584831029
// 0.020751946605741978
// 0.49458992830477655
// 0.7713206431362778 

测试代码段二:

function generateRandom() {
    Cesium.Math.setRandomNumberSeed(10);
    
    for (let i = 0; i<3; ++i){
        let temp = Cesium.Math.nextRandomNumber();
        console.log(temp);
    }

    let out = Cesium.Math.nextRandomNumber();
    console.log(out);
}

generateRandom();

// 0.7713206431362778 
// 0.2987611584831029
// 0.020751946605741978
// 0.49458992830477655

 上述两段代码的差别只是out变量的位置不一样,通过测试可以得出如下结论:

(1)seed设置器对作用域中的所有随机数生成器产生作用。

(2)seed设置器对随机数生成器产生作用顺序固定。

 作用

为了生成一个固定可再生的随机数(For reproducible random number),也就是说需要一个随机数,但是又需要该随机数固定,不是每次执行或调用都不一样。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值