Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
7 / 6 / 1
Регистрация: 12.10.2021
Сообщений: 397

Списки, рандом

10.11.2023, 22:08. Показов 1312. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, у меня есть список из 16 цифр и функция которая возвращает список из этих элементов, можно ли сделать так чтобы именно они задавались рандомно, а не по порядку?
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
public List<int> CreateDefaultTableKey()
{
       return DefaultKey;
}
 
private readonly List<int> DefaultKey = new List<int>()
{
            4,
            9,
            5,
            6,
            3,
            7,
            11,
            15,
            2,
            1,
            10,
            8,
            12,
            14,
            16,
            13
};
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.11.2023, 22:08
Ответы с готовыми решениями:

Процентный рандом
Доброй ночи. Заинтересовался как можно сделать процентный рандом. Т.е. допустим что у нас есть массив шансов int C = { 70, 29, 1 }; ...

Рандом + Массив
Как сделать рандом массива? Допусти я создам два массива из 5 элементов: string Mlogin= new string; Mlogin = &quot;Login...

Рандом от -5 (включительно) до 31
Рандом

26
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
11.11.2023, 22:36
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Wolfdp Посмотреть сообщение
А если метод нужно вызвать один раз, и дальше модуль вообще нигде не используется?
Выше OwenGlendower уже показал Random.Shared.

Мне в голову не приходит сценариев где нужно создавать локальный Random в методе.
Не уверен, но если есть у Random.Shared ограничение на параллельные запросы, то разве что если вызываются одновремено десятки-сотни экземпляров метода и их паралелльные запросы могут мешать друг другу.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
11.11.2023, 22:53
Цитата Сообщение от Элд Хасп Посмотреть сообщение
если есть у Random.Shared ограничение на параллельные запросы
Насколько помню он потокобезопасный, так что да -- желательно создавать на отдельную задачу свой Random. Но опять же -- если там вызов раз в час, и в приложении нигде использование рандома больше не предвидиться -- можно юзать Shared. Я просто исхожу из ситуации, когда нет четкого понимания за остальные модули приложения, и желательно иметь найболее "независимую" реализацию.

Ну и это всё хорошо звучит на форуме, а не в реальности когда прилетает на ревью срочный тикет, там видишь только Random.Shared и естественно забиваешь.
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18390 / 14321 / 5370
Регистрация: 17.03.2014
Сообщений: 28,999
Записей в блоге: 1
11.11.2023, 22:59
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Мне в голову не приходит сценариев где нужно создавать локальный Random в методе.
Почему нет? Он разве долго создается? Или много мусора создает? В чем причина? Раньше было разумно закешировать экземпляр Random из-за риска получить одинаковые значения, но сейчас этот баг исправили. Вполне допустимо создавать новый Random каждый раз. Память разве что сэкономим. Это неплохая причина. Вопрос будет ли это экономия заметной.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Не уверен, но если есть у Random.Shared ограничение на параллельные запросы
Документация говорит что это потокобезопасный экземпляр.
Provides a thread-safe Random instance that may be used concurrently from any thread.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
11.11.2023, 23:17
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Почему нет? Он разве долго создается? Или много мусора создает?
Не думаю. Но в любом случае, зачем, если уже есть экземпляр?

Цитата Сообщение от OwenGlendower Посмотреть сообщение
Документация говорит что это потокобезопасный экземпляр.
Речь не о колизиях, а о том что потокобезопасность может влиять на скорость запросов.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18390 / 14321 / 5370
Регистрация: 17.03.2014
Сообщений: 28,999
Записей в блоге: 1
11.11.2023, 23:29
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Но в любом случае, зачем, если уже есть экземпляр?
В общем да.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Речь не о колизиях, а о том что потокобезопасность может влиять на скорость запросов.
Похоже там используется Thread Local Storage так что никаких замедлений не должно быть.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
11.11.2023, 23:52
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Похоже там используется Thread Local Storage так что никаких замедлений не должно быть.
100% есть (ниже как перепроверял), правда профит начинается с очень больших значений. Я вообще это узнал на форуме, когда человек заполнял матрицы на вот прям дофига значений, там что-то было в районе лярда. Вот там разбить на потоки и соответственно каждому выдать свой Random имело смысл.

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
using System.Diagnostics;
 
var sw = Stopwatch.StartNew();
 
var tasks = new Task[20];
for (int i = 0; i < tasks.Length; i++)
    tasks[i] = Task.Run(Work2);
await Task.WhenAll(tasks);
 
Console.WriteLine(sw.Elapsed);
Console.ReadKey();
 
const int count = 10_000_000;
void Work()
{
    for (var i = 0; i < count; i++)
        _ = Random.Shared.Next();
}
 
void Work2()
{
    var random = new Random();
    for (var i = 0; i < count; i++)
        _ = random.Next();
}
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18390 / 14321 / 5370
Регистрация: 17.03.2014
Сообщений: 28,999
Записей в блоге: 1
11.11.2023, 23:59
Цитата Сообщение от Wolfdp Посмотреть сообщение
Вот там разбить на потоки и соответственно каждому выдать свой Random имело смысл.
Интересно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.11.2023, 23:59

Функция рандом
Небольшой вопросик кто знает как работает функция рамдом в с#? Может она постоянно выбивать одно число, если да можно сделать рамдом более...

Рандом из массива + и -
Всем привет, нужен рандом из массива плюс и минус. Нагуглил что-то подобное, рандом работает, но вычисления нет, ниже код. Что не так? ...

Задание на рандом
Подскажите пожалуйста, как сделать задания Дан класс Car в котором есть цена и выбор рандомного цвета(из цветов зеленый, красный,...

Работа с Рандом-ом
Ребята подскажите как прописать рандом для такого примера(пример игровое сражение) Нанесение урона персонажем и противником по...

Рандом с проверкой
Всем привет. Пишу игру на юнити. Возникла проблема.Есть условие: if (mount == 1) { ...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru