Delphi   发布时间:2022-04-10  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Delphi的随机生成器与C#的计算方法是否相同?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当我遇到这个时,我正在将一些Delphi代码翻译成c#代码.我没有Delphi的环境设置,所以我不能自己测试它.

德尔福:

RandSeed := var1;
Result := Random($FF);

C#:

Random RandSeed = new Random(var1);
Result = RandSeed.Next(255);

这些在Result中会有相同的值吗?如果没有,有什么想法可以这么做吗?

解决方法

Delphi PRNG是一个确定性的 linear congruential generator,其中134775813为a,1为c,并返回高32位的范围限制数.这是C#中的一个实现,返回与Delphi相同的值:
using System;

class DelphiRandom
{
    int _seed;

    public DelphiRandom(int seed)
    {
        _seed = seed;
    }

    int GetNext() // note: returns negative numbers too
    {
        _seed = _seed * 0x08088405 + 1;
        return _seed;
    }

    public int next(int maxvalue)
    {
        ulong result = (ulong) (uint) GetNext() * (ulong) (uint) maxValue;
        return (int) (result >> 32);
    }
}

class App
{
    static void Main()
    {
        DelphiRandom r = new DelphiRandom(42);
        for (int i = 0; i < 10; ++i)
            Console.WriteLine(r.Next(100));
    }
}

大佬总结

以上是大佬教程为你收集整理的Delphi的随机生成器与C#的计算方法是否相同?全部内容,希望文章能够帮你解决Delphi的随机生成器与C#的计算方法是否相同?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。