| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Аналог randsrc() в C# |
| Автор: VisMaster 16.12.2008, 10:10 |
| Здравствуйте есть ли аналог в C# такой функции из matlab: out = randsrc(m,n,[alphabet; prob]) Возвращает матрицу размером m на n, элементы которой являются независимыми случайными числами, выбираемыми из вектора-строки alphabet. Повторяющиеся значения в векторе alphabet игнорируются. Вектор-строка prob содержит вероятности появления символов, так что символу alphabet(k) соответствует вероятность prob(k), где k — целое число в диапазоне от единицы до размера вектора alphabet. Сумма элементов вектора prob должна быть равна единице Если более подробно то необходимо out = randsrc(1,1,[0,1; 0.3, 0.7]) чтобы функция вернула 0 с вероятностью 0.3 от общего числа опытов... Есть ли что то подобное? Google-ил - не помогла Заранее благодарен... |
| Автор: Zakonnic 16.12.2008, 14:01 | ||
Нет. Программисты на С# настолько суровы, что получают случайные числа бросанием кубика, а затем заполняют ими матрицу:
ЗЫ. Если вы пока не настолько суровы, для заполнения матрицы придется писать свою функцию. Либо искать сторонние матбиблиотеки, но здесь я пас. |
| Автор: diadiavova 16.12.2008, 20:21 |
| Ну такой хитроумной функции, видимо, действительно нет, всё таки дотнет - не математический пакет. Написать её видимо прийдётся самому, единственное добавление: для генерации (псевдо)случайных чисел существует класс System.Random. |
| Автор: VisMaster 17.12.2008, 22:21 |
| Да про System.Random уже знаю. Нашел выход, не совсем правильный на мой взгляд, но хоть что то: считаю что вероятность появления 0 равна Р, а вероятность появления 1 = (Р-1) , следовательно общее количество появлений 0 равна int (количество опытов)/Р = Count0, а затем генерю случайную последовательность из Count0 элементов, элементы с этими порядковыми номерами и будут нулями, во всех остальных будут 1. Идея топорная, но может быть кому то и подойдет... |
| Автор: Zakonnic 18.12.2008, 15:06 | ||||
Ради спортивного интереса написал вам такую функцию
Тест:
Результат - в итоговом массиве содержится примерно 300 нулей, 100 единиц, 200 двоек и 400 троек. |