Страницы

Поиск по вопросам

четверг, 25 октября 2018 г.

Как задать определенное количество символов используя C# Random

Добрый день. Я новичок в программировании. Столкнулся с проблемой. Как можно задать определенный объём символов при использовании функции Рандом. Вот пример кода в котором массив чисел заполняется в случайном порядке 0 или 1.
Хотелось бы сделать возможность задать параметры распределения. Как пример, чтобы 80% массива были 0. При этом чтобы остался случайным порядок заполнения
for (int i = 0; i < newArray.Length; i++) { newArray[i] = randomGen.Next(0, 2) if (newArray[i] == 0) { newArray[i] = black; } else { newArray[i] = white; } }


Ответ

К сожалению, «из коробки» такого решения нет. Но можно легко смоделировать.
Например, если мы хотим вероятность нуля 80%:
var percent = randomGen.Next(0, 100); // от 0 до 99 if (percent < 80) newArray[i] = black; else newArray[i] = white;

Для большего количества альтернатив, например, 60% чёрного, 30% красного, 6% зелёного и 4% белого:
var percent = randomGen.Next(0, 100); // от 0 до 99 if (percent < 60) // [0..60) => black newArray[i] = black; else if (percent < 60 + 30) // [60..90) => red newArray[i] = red; else if (percent < 60 + 30 + 6) // [90..96) => green newArray[i] = green; else // [96..100) => white newArray[i] = white;
Ну и так далее.

Комментариев нет:

Отправить комментарий