Я не уверен, какую терминологию использовать в этом, поэтому, пожалуйста, отредактируйте заголовок так, чтобы он подходил по необходимости.
В учебных целях я пытаюсь создать заставку, которая отображает изображения случайным образом из указанной папки. Да, Windows уже поставляется с этим, но опять же, в учебных целях. Хотя я предпочел бы научиться правильному способу в первый раз вместо того, чтобы возвращаться и заново учиться тому, как правильно делать вещи.
Теперь у меня уже есть случайный выбор изображений, их отображение и т. Д. Что я хотел бы сделать - это рандомизировать в зависимости от того, сколько раз было загружено определенное изображение.
Например:
Изображение 1: 0 просмотров (20%): 1 просмотр (19%)
Изображение 2: 0 просмотров (20%): 0 просмотров (24%)
Изображение 3: 0 просмотров (20%): 1 просмотр (19%)
Изображение 4: 0 просмотров (20%): 2 просмотра (14%)
Изображение 5: 0 просмотров (20%): 0 просмотров (24%)
Таким образом, у изображений 2 и 5 будет больше шансов быть показанными в следующем.
Я занимался этим некоторое время, но я не уверен, что не так, потому что он просто берет следующую фотографию в списке. Я попытался сгруппировать их, найдя все картинки с одинаковым количеством просмотров, а затем рандомизировав этот список, но, похоже, он не работает лучше всего. Вот код, который у меня есть для отображения картинок:
Random rnd = new Random();
string file = "";
int totalViews = 0;
List<string> array = new List<string>();
void ShowPicture()
{
array.Clear();
label1.Text = "";
foreach (Screen screen in Screen.AllScreens)
{
bool done = false;
while (!done)
{
int rand = rnd.Next(100), total;
foreach (string info in files.Keys)
{
total = (100 / files.Count) - (files[info] * (files.Count - 1)) + totalViews;
if (total >= rand)
{
foreach (string tmp in files.Keys) if (total >= files[tmp]) array.Add(tmp);
label1.Text = "Percentage for image: " + total;
done = true;
break;
}
}
}
file = array[rnd.Next(array.Count)];
files[file]++;
totalViews++;
Image image = Image.FromFile(file);
pictureBox1.Image = image;
label1.Text += "\nTotal Views: " + totalViews;
}
}
Надеюсь, это достаточно ясно и заранее спасибо.