Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 6

Генерация случайных чисел

16.02.2013, 17:48. Показов 2600. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем нужен достаточно большой массив (скажем 8000 типа byte) случайных бит, причем нужна достаточно быстрая генерация (сейчас через RNGCryptoServiceProvider, задержки ну очень большие, а стандартный random.next дает одинаковые числа за один такт, что печально)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.02.2013, 17:48
Ответы с готовыми решениями:

Генерация уникальных случайных чисел
Здравствуйте. Есть следующий код: class Employee { public int Id { get; set; } public string Name { get; set;...

Генерация случайных чисел в интервале от 1 до 50
Написать программу которая генерирует 10 случайных чисел в интервале от 1 до 50. Вывести их на экран и посчитать сколько среди них чисел...

Генерация случайных int чисел
Random rnd = new Random(); rnd.Next(10); label7.Text = rnd; Пишет: Неявное преобразование типа...

7
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
16.02.2013, 18:04
Вы каждый байт что ли отдельно генерируете?

Random.NextBytes()
RNGCryptoServiceProvider.GetBytes()
работают довольно быстро.
0
 Аватар для dreamorder
0 / 0 / 0
Регистрация: 07.10.2012
Сообщений: 60
16.02.2013, 18:06
как то так :
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
private readonly Timer tmrShow1; // Это идет до public Form1()
        private readonly Timer tmrShow2; // Это идет до public Form1()
        private readonly Timer tmrShow3; // Это идет до public Form1()
        private readonly Timer tmrShow4; // Это идет до public Form1()
        private readonly Timer tmrShow5; // Это идет до public Form1()
        private readonly Timer tmrShow6; // Это идет до public Form1()
        private readonly Timer tmrShow7; // Это идет до public Form1()
        private readonly Timer tmrShow8; // Это идет до public Form1()
        private readonly Timer tmrShow9; // Это идет до public Form1()
        private readonly Timer tmrShow10; // Это идет до public Form1()
 
 
        public Form1()
        {
 
            InitializeComponent();
 
            // 1
            tmrShow1 = new Timer(); 
            tmrShow1.Interval = 123; 
            tmrShow1.Tick += timer_Tick1;         
            tmrShow1.Enabled = false; 
            // 2 timer            
             tmrShow2 = new Timer(); 
            tmrShow2.Interval = 123; 
            tmrShow2.Tick += timer_Tick2; 
            tmrShow2.Enabled = false; 
            // 3
             tmrShow3 = new Timer(); 
            tmrShow3.Interval = 50; 
            tmrShow3.Tick += timer_Tick3;          
            tmrShow3.Enabled = false; 
            // 4 timer            
            tmrShow4 = new Timer(); 
            tmrShow4.Interval = 123;
            tmrShow4.Tick += timer_Tick4;
            tmrShow4.Enabled = false;
            // 5
             tmrShow5 = new Timer();
            tmrShow5.Interval = 123; 
            tmrShow5.Tick += timer_Tick5;        
            tmrShow5.Enabled = false;
            // 6 timer            
             tmrShow6 = new Timer(); 
            tmrShow6.Interval = 123;
            tmrShow6.Tick += timer_Tick6; 
            tmrShow6.Enabled = false; 
            // 7
             tmrShow7 = new Timer(); 
            tmrShow7.Interval = 123; 
            tmrShow7.Tick += timer_Tick7;           
            tmrShow7.Enabled = false; 
            // 8 timer            
             tmrShow8 = new Timer(); 
            tmrShow8.Interval = 123;
            tmrShow8.Tick += timer_Tick8;
            tmrShow8.Enabled = false;
            // 9
             tmrShow9 = new Timer();
            tmrShow9.Interval = 123; 
            tmrShow9.Tick += timer_Tick9;         
            tmrShow9.Enabled = false; 
            // 10 timer            
             tmrShow10 = new Timer();
            tmrShow10.Interval = 123; 
            tmrShow10.Tick += timer_Tick10; 
            tmrShow10.Enabled = false;                
        }
 
        // ------------------------------------------------------------------------------------------
 
        private void timer_Tick3(object sender, EventArgs e)
        {
            if (stav > 240)
            {
                tmrShow1.Enabled = false;
                tmrShow2.Enabled = true;
            }
            else if (stav > 230)
            {
                tmrShow1.Enabled = false;
                tmrShow2.Enabled = true;
            }
            else if (stav < 20)
            {
                tmrShow2.Enabled = false;
                tmrShow1.Enabled = true;
            }
            else if (stav == 123)
            {
                tmrShow1.Enabled = false;
                tmrShow2.Enabled = true;
            }
            else if (stav == 200)
            {
                tmrShow1.Enabled = false;
                tmrShow2.Enabled = true;
            }
            else if (stav == 150)
            {
                tmrShow1.Enabled = false;
                tmrShow2.Enabled = true;
            }
            else if (stav == 127)
            {
                tmrShow2.Enabled = false;
                tmrShow1.Enabled = true;
            }
            else if (stav == 50)
            {
                tmrShow2.Enabled = false;
                tmrShow1.Enabled = true;
            }
            else if (stav == 100)
            {
                tmrShow2.Enabled = false;
                tmrShow1.Enabled = true;
            }
        }
        
 
// R a n d o m ========================================================================
        private void timer_Tick1(object sender, EventArgs e)
        {
            tmrShow2.Enabled = false;
            Random ny = new Random();
            rrtt = ny.Next(-7, 9);
        }
 
        private void timer_Tick2(object sender, EventArgs e)
        {
            tmrShow1.Enabled = false;
            Random ny = new Random();
            rrtt2 = ny.Next(-8, 8);
        }
 
        private void timer_Tick4(object sender, EventArgs e)
        {
            //      Random ny = new Random();
            //      rrtt = ny.Next(-7, 8);
            //      stav += rrtt;           
        }
 
        private void timer_Tick5(object sender, EventArgs e)
        {
            //       Random ny = new Random();
            //       rrtt = ny.Next(-7, 8);
            //       stav += rrtt;           
        }
 
        private void timer_Tick6(object sender, EventArgs e)
        {
            //       Random ny = new Random();
            //       rrtt = ny.Next(-7, 8);
            //       stav += rrtt;           
        }
 
        private void timer_Tick7(object sender, EventArgs e)
        {
            //      Random ny = new Random();
            //        rrtt = ny.Next(-7, 8);
            //         stav += rrtt;           
        }
 
        private void timer_Tick8(object sender, EventArgs e)
        {
            //         Random ny = new Random();
            //        rrtt = ny.Next(-7, 8);
            //        stav += rrtt;           
        }
 
        private void timer_Tick9(object sender, EventArgs e)
        {
            //         Random ny = new Random();
            //        rrtt = ny.Next(-7, 8);
            //        stav += rrtt;           
        }
 
        private void timer_Tick10(object sender, EventArgs e)
        {
            //        Random ny = new Random();
            //        rrtt = ny.Next(-7, 8);
            //        stav += rrtt;           
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            tmrShow3.Enabled = true; 
            tmrShow1.Enabled = true; 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            tmrShow1.Enabled = false; 
            tmrShow2.Enabled = false; 
            tmrShow3.Enabled = false; 
        }
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
16.02.2013, 18:17
dreamorder, не поясните смысл этого ада?
0
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 6
16.02.2013, 18:41  [ТС]
Цитата Сообщение от Lasur Посмотреть сообщение
Вы каждый байт что ли отдельно генерируете?

Random.NextBytes()
RNGCryptoServiceProvider.GetBytes()
работают довольно быстро.
Нет, спасибо, опробую, да и насколько они быстры для ситуации поста #1

Добавлено через 16 минут
Следующий код работает около 7~ секунд, другие варианты/улучшения?
C#
1
2
3
4
5
6
7
        public byte[] generateArray(uint bytes)
        {
            var buf = new byte[bytes];
            Random rnd = new Random();
            rnd.NextBytes(buf);
            return buf;
        }
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
16.02.2013, 18:43
Цитата Сообщение от Freetime Посмотреть сообщение
а стандартный random.next дает одинаковые числа за один такт
за один такт процессора и так получается только одно число. А что еще вы имели ввиду? Как правило, то, что числа генерируются одни и те же связанно с неправильным созданием объекта класса (для каждой итерации - новый объект). Сделайте статическое поле random и попробуйте с ним.

Добавлено через 57 секунд
С какими параметрами метода 7 секунд?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
16.02.2013, 19:17
Цитата Сообщение от Freetime Посмотреть сообщение
Следующий код работает около 7~ секунд
Что-то вы темните.
Массив байт на 80000 (восемьдесят тысяч) элементов генерируется чуть больше чем за одну миллисекунду на моем стареньком П4.

Похоже, тормоза у вас в какой-то другой части кода.
0
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 6
16.02.2013, 21:06  [ТС]
Действительно моя) Я её случайно в цикл загнал, итого она меняла этот массив 16000 раз.. Спасибо за поддержку
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2013, 21:06
Помогаю со студенческими работами здесь

Генерация случайных чисел в конструкторе класса
Здравствуйте! Мне дано задание, где надо создать класс Массив. В нём определить конструктор с параметрами и без них. Роль конструктора...

Генерация массива случайных неповторяющихся чисел
Нужно сгенирировать массив случайных чисел. Предположим что массив размером 10000, а диапазон чисел от 1 до 1000000. Вариант брать...

Неправильная генерация случайных вещественных чисел
Функция имеет вид static double GetRandomNumber(double minimum, double maximum) { Random random = new...

Генерация случайных чисел без совпадений
Доброго времени суток всем. Нужна помощь по написании кода в котором при генерации 6-ти случайных чисел не совпадали друг с другом,...

Генерация случайных чисел различными способами
Добрый день ! Опишу проблему! Пишу задание по программированию в университете. Задали написать программу реализации вывода N-го ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru