是否可以从c#中的Random()序列中获取种子?
我的目标是创造一种编辑器,让玩家创造他的角色,就像他能够在一组不同的眼睛中选择,放置它们,然后是头发等。最后它会输出一个具有不同数字序列的数组。
有了这个,我想得到种子,因为我的目标是能够与其他人分享这个角色。我只是给他们种子,他们会有我创造的确切角色。
答案 0 :(得分:4)
根据您对@SLaks的评论,我认为您提出的问题与您尝试解决的问题无关。
您要解决的问题是:如何获取一组用户定义的属性和值,并将它们变成易于在朋友之间传递的内容?
这是完全相同的问题:如何处理冗长,复杂的URL并将其转换为简短的URL?
因此,我会看一下这个着名的问题:URL缩短器:How to code a URL shortener?
在那里,您将看到Bijective Functions的使用以及可用于解决您自己问题的优秀算法说明。这可用于将您的示例序列(例如23,56,45,78,80
)转换为单字母或双字母代码。
答案 1 :(得分:3)
没有办法直接从现有的Random类实例或生成的序列中退出种子。但是,在创建Random类时,可以使用constructor that allows you to specify the seed。如果您随后保存此种子,则可以将其传递给其他人。
如果您希望构造是随机的,但保存该种子,一个选项是使用2个Random实例。第一个可用于创建种子,然后使用该种子编号构建第二个种子(您将保存并传递给另一个人)。
答案 2 :(得分:2)
您应该在第一次创建时存储种子。
答案 3 :(得分:2)
为什么不直接存储角色的属性而不是种子?这很简单,很有意义。
此外,如果用户创建自己的序列,它将不会有“种子”。
答案 4 :(得分:0)
另一种方法是让用户选择预先生成的特征集(即,基于具有已知种子的随机序列)。这样您就需要为您的序列存储小种子(可能使用自定义伪随机生成器)。