Cesium API:Cesium.Math.setRandomNumberSeed(seed)

本文介绍了Cesium.Math提供的nextRandomNumber()函数,该函数基于MersenneTwister算法生成[0,1)间的随机浮点数。通过setRandomNumberSeed()函数设置种子,可以确保生成的随机数序列可预测,即相同种子产生相同序列。文中通过代码示例展示了种子设置对作用域内随机数生成的影响,强调了其在生成可复现随机数场景中的应用价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 在介绍题目中的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),也就是说需要一个随机数,但是又需要该随机数固定,不是每次执行或调用都不一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值