2011-02-07 71 views
1

我有大約100個提示,需要在網站上隨機顯示,每天提示不同提示,並且無法訪問數據庫。我曾考慮將提示放入數組中,並將每個組與每個月的某一天相關聯,但這不會使提示隨機出現。什麼是完成這項任務的相對無痛的方法?顯示每日提示,無數據庫

回答

1

由於要顯示每天只有一個提示,你不能存儲任何狀態,你可以做到以下幾點:

  1. 排序使用一些確定性方法的提示。
  2. 在今天的日期播種一個隨機數發生器。
  3. 顯示i尖端其中i = random.Next(numTips)
  4. 重複這整個過程中(包括再接種的隨機數生成器),每個時間。

如果你也想確保每個尖端顯示至少一次重複前一個提示:

  1. 種子隨機數發生器具有恆定值(當前的時間,這是重要)。
  2. 使用您創建的非隨機數生成器將元素與Fisher-Yates混洗。或者使用LINQ:

    tips.OrderBy(x => random.Next()).ToArray(); 
    
  3. 顯示i尖國防部tips.Length其中i是紀元以來的天數。
+0

我認爲這是我正在尋找的解決方案,謝謝! – Alex 2011-02-08 03:23:22

0

選取一個介於1和100之間的隨機數字,顯示該提示。

如果您可以獲得磁盤上的提示,請將其命名爲文件1.tip至100.tip,然後選擇您的電話號碼,然後閱讀並顯示該文件。

如果你有內存中的提示(一個數組最簡單),只顯示你的隨機數指向的提示,減去一個(假設你有從零開始的數組索引)。

除非我在這裏錯過了一些基本的東西,這是基本的要點。

+0

我在考慮這些方面,但是提示需要顯示一天,即重新加載頁面**今天**不會改變顯示的提示,僅顯示明天等。 – Alex 2011-02-07 23:02:19

0

在您的提示顯示文件中有一個函數,它檢查會話開始部分中的日期。讓日期檢查器計算一年中的哪一天 - 第1天,2 3,... 100天。

根據年度日計數選擇提示文件。如果大於100,重新啓動爲1.