【问题标题】:How to have two states of randomness in unity3d, c#?如何在unity3d,c#中有两种随机状态?
【发布时间】:2018-03-18 00:16:30
【问题描述】:

我正在尝试实现类似两种状态的随机数生成

例如,一个带有种子的实例和另一个带有默认随机性的实例:

UnityEngine.Random.InitState(255);

我需要这个,因为我有 my_game 的一部分作为多人游戏与 game_a 和 my_game 有一些额外的功能,也使用随机性。

我怎样才能做到这一点?

【问题讨论】:

    标签: c# unity3d random


    【解决方案1】:

    使用此处记录的 Random 类的实例:https://msdn.microsoft.com/en-us/library/ctssatww(v=vs.110).aspx

    using System;
    using System.Threading;
    
    public class Example
    {
       public static void Main()
       {
          Random rand1 = new Random((int) DateTime.Now.Ticks & 0x0000FFFF);
          Random rand2 = new Random((int) DateTime.Now.Ticks & 0x0000FFFF);
          Thread.Sleep(20);
          Random rand3 = new Random((int) DateTime.Now.Ticks & 0x0000FFFF);
          ShowRandomNumbers(rand1);
          ShowRandomNumbers(rand2);
          ShowRandomNumbers(rand3);
       }
    
       private static void ShowRandomNumbers(Random rand)
       {
          Console.WriteLine();
          byte[] values = new byte[4];
          rand.NextBytes(values);
          foreach (var value in values)
             Console.Write("{0, 5}", value);
    
          Console.WriteLine(); 
       }
    }
    

    【讨论】:

    • 编辑了问题 Random() does not take parameters in unity3d
    • 使用 c# random 类获得附加功能
    【解决方案2】:

    您可以使用 Random 类的两个实例。

    定义要使用 System.Random 而不是 UnityEngine.Random:

    using RNG = System.Random;

    然后

    RNG rand1 = new RNG(); 
    RNG rand2 = new RNG(5);
    

    第一个将使用取决于游戏开始时间的种子,因此它总是不同的。 第二个有一个固定的种子,应该总是产生相同的随机数序列

    编辑以显示 C# Random 优于 UnityEngine Random 的用法

    【讨论】:

    • 编辑了问题 Random() does not take parameters in unity3d
    • 使用 C# random 有问题吗?我不认为你可以用UnityEngine.Random 定义两个单独的种子定义你想使用System.Randomusing RNG = System.Random;,然后你可以使用我的建议:RNG rand1 = new RNG(); RNG rand2 = new RNG(5);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 2016-12-30
    • 2011-12-17
    • 1970-01-01
    相关资源
    最近更新 更多