С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867

Рандом в каждом потоке генерирует одно и тоже значение

12.06.2014, 00:36. Показов 2873. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Снова я, нуб
Создается рандом в каждом потоке, и генерирует одно и то же значение во всех потоках.

C#
1
2
3
4
5
6
7
8
9
10
11
12
        char[] result=new char[50];
        
        void Button1Click(object sender, EventArgs e)
        {
            Parallel.For(0,50,new ParallelOptions{MaxDegreeOfParallelism=10},metod_thread);
            MessageBox.Show(new string(result));
        }
        
        void metod_thread(int i){
            Random rnd=new Random();
            result[i]=(char)rnd.Next(65,122);
        }
если в основном потоке создать рандом - тогда все нормально. Почему так?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        char[] result=new char[50];
        Random rnd=new Random();
        
        void Button1Click(object sender, EventArgs e)
        {
            Parallel.For(0,50,new ParallelOptions{MaxDegreeOfParallelism=10},metod_thread);
            MessageBox.Show(new string(result));
            
        }
        
        void metod_thread(int i){
            result[i]=(char)rnd.Next(65,122);
        }
Миниатюры
Рандом в каждом потоке генерирует одно и тоже значение   Рандом в каждом потоке генерирует одно и тоже значение  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.06.2014, 00:36
Ответы с готовыми решениями:

Обьекты Random выдают одно и тоже значение
Написал кодик и получил интересное и необычное для меня явление!Три разных объекта класса Random выдают одно и тоже значение в три разные...

Rnd генерирует одно и тоже число
Здравствуйте! Понимаю, очень глупый вопрос, но что не так с этим рандомом? Генерирует постоянно цифру 6. Dim fnrnd As Integer = 0 ...

Rand все время генерирует одно и тоже число
Помогите создать массив и равномерно распределить в нем рандомные числа от -55 до 49? Что то у меня фигня выходит, никак не могу понять в...

3
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
12.06.2014, 07:27
Winhttp22, для инициализации объекта Random необходимо число. Если в конструкторе число не указано, то берется текущее значение системных часов. У вас в параллельном исполнении все Random'ы инициализируются одинаковым значением и выдают одинаковую последовательность.
0
289 / 252 / 107
Регистрация: 26.10.2012
Сообщений: 802
12.06.2014, 08:52
Могу посоветовать такую надстройку над рандомом. Работает без lock и с несколькими потоками.
C#
1
2
3
4
5
6
7
8
9
10
static class MyRandom
{
    static Random _random = new Random();
 
    public static double NextDouble()
    {
         return _random .NextDouble();
    } 
    //.....  
}
0
389 / 304 / 67
Регистрация: 10.07.2010
Сообщений: 802
12.06.2014, 10:13
C#
1
Random rnd=new Random();
нужно инициализировать 1 раз, если перед генерацией постоянно инициализировать, то в большинстве случаев будет выводится одно и тоже число
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.06.2014, 10:13
Помогаю со студенческими работами здесь

Рандом выводит всегда одно и тоже число
mass=rand(); всегда выводит число ниже, что делать? -842150451

Как написать код, чтобы рандом повторно не выводил одно и тоже число?
Как написать код, чтобы рандом повторно не выводил одно и тоже число. Например: Рандом от 1 до 5. При нажатии на батон выпало число 3, при...

Почему rand() генерирует при каждом зауске одно и то же?
народ помогите найти хороший генератор челых чисел. т.к rand() с <stdlib.h> генерирует постоянные последовательности чисел. к примеру: ...

Функция рандом. Как заставить чтоб одно и тоже число не сгенерировал больше 4 раза
Привет всем. Я пишу карточную игру(ну пытаюсь написать :pardon: ) белот. В игре 4 игроков. Я решил сделать так, создать матрицу 8х9. 00...

Постоянно одно и тоже значение
Вычислить используя проверку if П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru