Показать ежедневный совет, нет базы данных - PullRequest
1 голос
/ 08 февраля 2011

У меня есть приблизительно 100 советов, которые мне нужно отображать на сайте случайным образом, разные подсказки каждый день, и нет доступа к базе данных. Я думал о том, чтобы поместить подсказки в группы массивов и связать каждую группу с днем ​​месяца, но это не привело бы к случайному отображению подсказок. Что является относительно безболезненным способом выполнения этой задачи?

Ответы [ 3 ]

1 голос
/ 08 февраля 2011

Поскольку вы хотите отображать только один совет в день, и вы не можете сохранить состояние, вы можете сделать следующее:

  1. Сортировать советы, используя какой-то детерминированный метод.
  2. Заполните генератор случайных чисел текущей датой.
  3. Отобразите подсказку i th , где i = random.Next(numTips)
  4. Повторите весь этот процесс (включая повторное заполнение случайного числагенератор) каждый раз.

Если вы также хотите, чтобы каждый совет отображался хотя бы один раз перед повторением подсказки:

  1. Заполните генератор случайных чисел с константойзначение ( не текущее время, это важно).
  2. Перетасовать элементы с помощью Fisher-Yates , используя генератор не очень случайных чиселВы создалиИли используйте LINQ:

    tips.OrderBy(x => random.Next()).ToArray();
    
  3. Отобразите i th tip mode tips.Length где i - количество дней с начала эпохи.
0 голосов
/ 08 февраля 2011

в вашем файле отображения подсказок есть функция, которая проверяет дату в разделе начала сеанса. пусть программа проверки даты подсчитает, какой это день года - 1, 2, 3, ... 100.

выберите файл подсказки в соответствии с количеством дней в году. если больше 100, перезапустите на 1.

0 голосов
/ 08 февраля 2011

Выберите случайное число от 1 до 100, отобразите этот совет.

Если у вас есть подсказки на диске, назовите их в файлах с 1.tip по 100.tip, затем, когда вы выберете номер, просто прочитайте и отобразите этот файл.

Если у вас есть подсказки в памяти (массив был бы проще), просто отобразите подсказку, на которую указывает ваше случайное число, минус один (при условии, что у вас индексирование массива на основе нуля).

Если я не пропустил что-то фундаментальное, вот основной смысл.

...