You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何非顺序使用LCG生成带种子的随机无限2D地牢?

2D地牢随机生成问题
  • 目标:制作一款2D地牢游戏,地牢内每个格子有相同概率成为实心块或空气块,支持无限生成且与种子绑定——相同种子对应完全一致的地牢。
  • 最初实现思路:取格子的x、y坐标相乘,加上地牢种子后作为LCG(线性同余生成器)的种子,以此判断格子类型,原本认为这种方式编程难度低。
  • 实际问题:当x=0或y=0时,这些格子的种子始终等于地牢种子,生成的数值完全相同;其余格子也会出现明显的非随机规律,这是由LCG的函数特性导致的。
  • 当前困境:需要设计更复杂的格子种子计算公式来提升随机性,但暂未找到合适方案。曾尝试引入三角函数,但不确定这是否是最优解,担心会快速出现重复模式。

一维简化测试代码

#include "MRandom.h"//A LCG library created by my or anyone.
#include <iostream>

using namespace std;

int main(){
    for(int x = 0; x < 100; x++){
        setSeed(x);
        int n = random();
        
        cout<<n<<endl;
    }
    return 0;
}

该代码的输出呈现明显规律:数值增长至LCG模数后回到LCG的c值,再次线性增长,重复出现弱随机的模式。

内容的提问来源于stack exchange,提问作者MorsaHelada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:34:59