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

Баг или я дурак?

22.12.2020, 20:58. Показов 1229. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Код: Суть кода в выводе рандомного стринга (10 разных)
Проблема: Почему-то выводится один и тот самый стринг, + иногда 2ой стринг тоже рандомный. Я начал гнать на себя, и думал как понять где я прокололся, сделал
C#
1
Console.WriteLine($"i=[{i}]|j=[{j}]");
и тут чудо, все работает корректно.
Вопрос: Почему?, как?, как исправить?, и как заставить работать у меня в визуале?. PS Потом гнал на свой пк, и мой визуал, тестил в онлайн компиляторах, в одном все корректно, а в других хуже чем в визуале.
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
            for (int i = 0; i < 10; i++)
            {
                Random random = new Random();
                string finallRandomOutput = null;
                char[] randomCharFinallArray = new char[0];
                char[] strArr = { 'q', 'w', 'e', 'r', 't', 'y', 'U', 'I', 'O', 'P', 'A', 's', 'd', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'x', 'C', 'v', 'b', 'N', 'M', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
                int a = 0;
 
                for (int j = 0; j < 50; j++)
                {
                    Array.Resize(ref randomCharFinallArray, randomCharFinallArray.Length + 1);
                    a = random.Next(strArr.Length);
 
                    randomCharFinallArray[j] = strArr[a];
                    //Console.WriteLine($"i=[{i}]|j=[{j}]");
                }
 
                finallRandomOutput = new string(randomCharFinallArray);
 
                Console.WriteLine($"{finallRandomOutput}");
 
                randomCharFinallArray = new char[0];
 
                finallRandomOutput = null;
            }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.12.2020, 20:58
Ответы с готовыми решениями:

Баг или я дурак =)
Подскажите что делаю не так. в классе Base создаю объект класса Pacinet. Создается ошибок нет,ничего красным не подчеркнуто. На...

Баг или фича ? =)
Thread threads = new Thread; for (int i = 0; i &lt; threads.Length; i++) { threads = new...

Баг или нет
Функции char.IsDigit(); char.IsNumber(); работают идентично в VS2012 и не реагируют на шестнадцатиричные цифры от A до F. Так...

5
Эксперт .NET
 Аватар для Rius
13235 / 7730 / 1681
Регистрация: 25.05.2015
Сообщений: 23,551
Записей в блоге: 14
22.12.2020, 21:02
Лучший ответ Сообщение было отмечено Red007Master как решение

Решение

Red007Master
Создавайте Random 1 раз за всё время выполнения программы и проблем не будет.
1
0 / 0 / 0
Регистрация: 18.11.2020
Сообщений: 12
22.12.2020, 21:26  [ТС]
Спасибо, помогло.

Добавлено через 14 минут
Цитата Сообщение от Rius Посмотреть сообщение
Red007Master
Создавайте Random 1 раз за всё время выполнения программы и проблем не будет.
Спасибо за ответ, подскажите как реализовать это здесь.
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
static string GetRandomString()
        {
            Random random = new Random();
            string finallRandomOutput = null;
            char[] randomCharFinallArray = new char[0];
            string stringBuilderInput = null;
            char[] strArr = { 'q', 'w', 'e', 'r', 't', 'y', 'U', 'I', 'O', 'P', 'A', 's', 'd', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'x', 'C', 'v', 'b', 'N', 'M', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
            
            int a = 0;
 
            randomCharFinallArray = new char[0];
            finallRandomOutput = null;
 
            for (int j = 0; j < 50; j++)
            {
                StringBuilder randomStringFinall = new StringBuilder(stringBuilderInput);
                Array.Resize(ref randomCharFinallArray, randomCharFinallArray.Length + 1);
                a = random.Next(strArr.Length);
 
                randomCharFinallArray[j] = strArr[a];
            }
 
            finallRandomOutput = new string(randomCharFinallArray);
            return finallRandomOutput; 
        }
0
Эксперт .NET
 Аватар для Rius
13235 / 7730 / 1681
Регистрация: 25.05.2015
Сообщений: 23,551
Записей в блоге: 14
22.12.2020, 21:36
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
 
namespace Pauser {
    static class Program {
        private static Random _random = new Random();
 
        [STAThread]
        static void Main() {
            var a = _random.Next();
                ...
        }
    }
}
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16141 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,119
Записей в блоге: 2
22.12.2020, 21:53
Цитата Сообщение от Red007Master Посмотреть сообщение
подскажите как реализовать это здесь.
Типовым решением является создание в статическом поле только для чтения одного экземпляра Random.
Если не вдаваться в потоко-защищённость, то в самом простом виде это будет так:
C#
1
2
3
4
5
        private static readonly Random random = new Random();
        static string GetRandomString()
        {
         // Random random = new Random();
            string finallRandomOutput = null;
1
0 / 0 / 0
Регистрация: 18.11.2020
Сообщений: 12
23.12.2020, 03:32  [ТС]
Спасибо, пока пытался разобраться сам дошел, но к более глупому варианту).

Добавлено через 2 минуты
Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.12.2020, 03:32
Помогаю со студенческими работами здесь

Баг компилятора или я дурак?
До:https://www.cyberforum.ru/attachment.php?attachmentid=840160&amp;stc=1&amp;d=1496427343 ...

Или я дурак, или компилятор смеется, вот только чувствую я дурак)
Ввожу 1939 совершенно верно, вожу какое либо число тоже совершенно верно. Не отрабатывает else { } Подскажите чтоль.. ...

Или я дурак или лыжи не едут, склоняюсь к первому.
говорит необъявленный идентификатор относительно всех функций класса notebook. Пробовал все конструкторы методов перекинуть в хедер эффект...

std::regex : баг на сайте или баг компилятора?
http://en.cppreference.com/w/cpp/regex/regex_match этот код выкидывает throw... Добавлено через 35 секунд компилятор gcc 4.8

Баг asio? или баг TCP стека?
всем привет. повстречался с очень странным багом. и не могу определить кто бажит, asio, или TCP-стек. на стороне клиента,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru