Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
3 / 2 / 1
Регистрация: 14.09.2016
Сообщений: 501
.NET 4.x

Random, не совсем получилось с шансами

03.04.2020, 01:48. Показов 1673. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
Random rand2 = new Random();
                                int val2 = rand2.Next(0, 1000);
                                string foundcrystalname = "";
 
                                if (val2 < 50)
                                {
                                    (peer.Data as PlayerInfo).emerald += 1;
                                    foundcrystalname = "emerald";
                                }
                                else if (val2 < 100)
                                {
                                    (peer.Data as PlayerInfo).diamond += 1;
                                    foundcrystalname = "diamond";
                                }
                                else if (val2 < 200)
                                {
                                    (peer.Data as PlayerInfo).sapphire += 1;
                                    foundcrystalname = "sapphire";
                                }
                                else if (val2 < 300)
                                {
                                    (peer.Data as PlayerInfo).ruby += 1;
                                    foundcrystalname = "ruby";
                                }
                                else if (val2 < 400)
                                {
                                    (peer.Data as PlayerInfo).gold += 1;
                                    foundcrystalname = "gold";
                                }
                                else if (val2 < 600)
                                {
                                    (peer.Data as PlayerInfo).opal += 1;
                                    foundcrystalname = "opal";
                                }
                                else if (val2 < 800)
                                {
                                    (peer.Data as PlayerInfo).amber += 1;
                                    foundcrystalname = "amber";
 
                                }
                            
                                sendconsolemsg(peer, "`3>>`7You found " + foundcrystalname + " crystal.");
Я сделал систему находки криссталов, но не совсем знаю, как её нормально сделать. Я хочу, чтобы 5% шанс было бы найти "emerald", допустим 40% шанс найти "gold", 80% шанс найти "amber". Но здесь плохо я сделал, так как "amber" или опал вообще редко выводит. Что тут можно исправить?
Я сделал
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.04.2020, 01:48
Ответы с готовыми решениями:

Когда твой Random совсем не Random
Мой код ведет себя весьма странно. У меня есть список экземпляров класса в котором (Уж простите что я такое наделал) есть экземпляр другого...

Написал программу, по задаче, однако не совсем понял как это получилось
Я написал программу, она работает правильно, делает то, что нужно рисует треугольник, в котором после каждого переноса строки добавляется...

Рандомайзер с шансами
Здравствуйте. Нужно написать программу на Паскале. Суть программы такова, чтобы она рандомно выбирала цвета (красный, чёрный или зелёный),...

2
964 / 485 / 241
Регистрация: 02.06.2016
Сообщений: 760
03.04.2020, 02:28
Лучший ответ Сообщение было отмечено Terminator004 как решение

Решение

Цитата Сообщение от Terminator004 Посмотреть сообщение
Я хочу, чтобы 5% шанс было бы найти "emerald", допустим 40% шанс найти "gold", 80% шанс найти "amber"
Это как? 5+40+80 = 125 > 100. В сумме должно быть не больше 100%.
Цитата Сообщение от Terminator004 Посмотреть сообщение
Но здесь плохо я сделал, так как "amber" или опал вообще редко выводит
сейчас у вас такие вероятности:
C#
1
2
3
4
5
6
7
8
emerald    5%
diamond    5%
sapphire  10%
ruby      10%
gold      10%
opal      20%
amber     20%
-         20%
Предположим так: emerald - 5%, gold - 40%, amber - 20%. Тогда должно быть:
C#
1
2
3
4
5
6
int val2 = rand2.Next(0, 100); // 100!
 
if (val2 < 5) // emerald
else if (val2 < 5 + 40) // gold
else if (val2 < 5 + 40 + 20) // amber
else // ничего из этого
1
3 / 2 / 1
Регистрация: 14.09.2016
Сообщений: 501
03.04.2020, 08:56  [ТС]
Aael, спасибо, понятно теперь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.04.2020, 08:56
Помогаю со студенческими работами здесь

Рандомайзер с шансами
Здравствуйте. Нужно написать программу на Паскале. Суть программы такова, чтобы она рандомно выбирала цвета (красный, чёрный или зелёный),...

Что не так с 'Random' или There is no overloaded version of 'Random' that can be called with these arguments
Доброго времени суток! Я с программированием на &quot;Вы&quot;, поэтому очень прошу доходчиво объяснить, что не так с этой строчкой? Выводит ошибку:...

Random, повторы при static Random(1 seed)
Добрый вечер. Использую private static readonly Random, так как крутится в цикле и если убрать static, будут повторы даже в указанием...

У меня непонятки с методами Math.random() и Random()
Задача : заполнить массив из 15 элементов случайным образом вещественными значениями х (-5 &lt;= x &lt;= 5) class Massiv { ...

Random и объекты класса (pseudo random)
Всем привет. Есть класс: typedef unsigned int ui; class Player { private: ui health;


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
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, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru