Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
SKIER
11 / 10 / 5
Регистрация: 04.07.2009
Сообщений: 356
#1

обьекты Random выдают одно и тоже значение

03.03.2010, 13:57. Просмотров 1639. Ответов 8
Метки нет (Все метки)

Написал кодик и получил интересное и необычное для меня явление!Три разных объекта класса Random выдают одно и тоже значение в три разные переменные!Что я сделал не так.
C#
1
2
3
4
5
6
7
8
9
            Random sluch = new Random();
            Random sluch1 = new Random();
            Random sluch2 = new Random();
            double A= sluch.Next(0,500);
            textBox1.Text = A.ToString();
            double B = sluch1.Next(0, 500);
            textBox2.Text = A.ToString();
            double C = sluch2.Next(0, 500);
            textBox3.Text = A.ToString();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2010, 13:57
Ответы с готовыми решениями:

Рандом в каждом потоке генерирует одно и тоже значение
Снова я, нуб :( Создается рандом в каждом потоке, и генерирует одно и то же...

List<> - разные экземпляры, одно значение
class SuppFunc { //... } private List&lt;SuppFunc&gt; SF; class { ...

HtmlAgilityPack возвращает одно значение для разных тегов
Нужно спарсить все эти значения по одному. Выходит так, что парсит одно и...

Одно значение в List из Select
Всем доброго времени суток. Есть бд с таблицей Food В нем есть 2 фрукта...

Как вернуть одно string-значение из БД ?
Здравствуйте, никак не могу разобраться с вопросом. Нужно вернуть одиночное...

8
kirill29
2065 / 1228 / 169
Регистрация: 01.02.2009
Сообщений: 2,842
03.03.2010, 14:17 #2
Присвоил текстбоксам одну и туже переменную (найди отличия):
C#
1
2
3
4
5
6
7
8
9
Random sluch = new Random();
Random sluch1 = new Random();
Random sluch2 = new Random();
double A= sluch.Next(0,500);
textBox1.Text = A.ToString();
double B = sluch1.Next(0, 500);
textBox2.Text = B.ToString();
double C = sluch2.Next(0, 500);
textBox3.Text = C.ToString();
0
SSV
Заблокирован
03.03.2010, 14:27 #3
kirill29.Все равно будет выдавать одно и тоже. В определенный момент времени одно и тоже число.
Возможно поэтому и называется псевдослучайным.
Лучше сделать так
C#
1
2
3
4
5
6
7
8
 Random sluch = new Random();
            for (int i = 0; i <= 3; ++i)
            {
                if (i == 1) textBox1.Text = sluch.Next(0, 500).ToString();
                if (i == 2) textBox2.Text = sluch.Next(0, 500).ToString();
                if (i == 3) textBox3.Text = sluch.Next(0, 500).ToString();
 
            }
0
mik-a-el
Администратор
71690 / 40964 / 241
Регистрация: 10.04.2006
Сообщений: 12,721
03.03.2010, 14:29 #4
ssv_www, вы всмотритесь внимательнее в код автора и найдете ошибку
0
SKIER
11 / 10 / 5
Регистрация: 04.07.2009
Сообщений: 356
03.03.2010, 14:31  [ТС] #5
Всем спасибо!!!По ходу я не выспался сегодня.Это не глупость а не внимательность! ))
0
kirill29
2065 / 1228 / 169
Регистрация: 01.02.2009
Сообщений: 2,842
03.03.2010, 14:34 #6
Ну или в его варианте так:
C#
1
2
3
4
5
6
Random sluch = new Random(DateTime.Now.Millisecond);
Random sluch1 = new Random(DateTime.Now.Millisecond+1);
Random sluch2 = new Random(DateTime.Now.Millisecond+2);
textBox1.Text = sluch.Next(0,500).ToString();
textBox2.Text = sluch1.Next(0, 500).ToString();
textBox3.Text = sluch2.Next(0, 500).ToString();
0
SSV
Заблокирован
03.03.2010, 14:38 #7
Цитата Сообщение от mik-a-el Посмотреть сообщение
ssv_www, вы всмотритесь внимательнее в код автора и найдете ошибку
Ошибку я заметил, но это ни чего не меняет. В коде от kirill29 все равно числа в текстбоксах одинаковые.
А может я тоже не выспался?
...............................................
Заметил новый вариант от kirill29. Работает.
0
kirill29
2065 / 1228 / 169
Регистрация: 01.02.2009
Сообщений: 2,842
03.03.2010, 14:42 #8
Цитата Сообщение от ssv_www Посмотреть сообщение
Ошибку я заметил, но это ни чего не меняет. В коде от kirill29 все равно числа в текстбоксах одинаковые.
А может я тоже не выспался?
Да, в первом варианте числа действительно одинаковые. Просто заметив явную опечатку в коде, я не проанализировал весь код.
0
SKIER
11 / 10 / 5
Регистрация: 04.07.2009
Сообщений: 356
03.03.2010, 14:50  [ТС] #9
Вот мой рабочий код если кому интересно!Сори не работает функция кодирования текста в код сишарпа на форуме,может из за браузера


C#
1
2
3
4
5
6
7
Random sluch = new Random();            
            double A= sluch.Next(-500,500);
            textBox1.Text = A.ToString();
            double B = sluch.Next(-500, 500);
            textBox2.Text = B.ToString();
            double C = sluch.Next(-500, 500);
            textBox3.Text = C.ToString();
заработало
0
03.03.2010, 14:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2010, 14:50

Выборка из БД возвращает только одно значение
Нужно вытянуть из таблицы параметры, а вытаскивает только 1 значение.Нужна...

Как передать из combobox одно значение (id), отображая другое (name)?
Задаю отображаемое значение в DisplayMember и фактическое в ValueMember....

Random одно и тоже значение
уважаемые, использую функцию рандом в функции всё время одно и тоже значение,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru