簡體   English   中英

如何每天生成一個新的隨機數序列?

[英]How to generate a new sequence of random numbers every day?

我在游戲中每天挑戰。 每天應該是一個新的挑戰。 我的程序生成使用隨機數生成器 兩次嘗試每日挑戰(或兩個不同的用戶嘗試)應具有相同的結果(相同的隨機數序列)。

我想要:

  • 生成一個隨機數序列。
  • 每次我在同一天開始生成時,順序必須相同
  • 每天得到不同的數字序列

我想我應該創建一個以DateTime作為種子的Random ,但是我不確定如何。 DateTime.UtcNow.Ticks是一個long型,而DateTime的種子是一個int

我不希望hours/minutes/seconds影響隨機性(除了昨天和今天之間的邊界)。 我找到的答案都是關於將當前時間傳遞給Random (或者這是默認的無參數ctor行為)。

// UTC ensures all users see the date flip occur at the same
// time. If you want the date flip to be local for the user's
// time zone, use DateTime.Today instead.
var date = DateTime.UtcNow.Date;
// Generate a seed by combining the year and the day of the year.
// DayOfYear is always gregorian (ignores culture) and always in
// [1,366].
var seed = date.Year * 1000 + date.DayOfYear;
return new Random(seed);

最好每天生成一次隨機數序列並將其存儲,以便可以將那些數字“重放”給當天挑戰的人們。 例如,如果該挑戰由隨機生成的益智游戲板組成,則此方法可能可行。 這種方法還具有以下優勢:該應用程序不會與特定RNG的實現綁定。 另請參閱我關於種子RNG的文章。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM