Рандом с шансом выпадения

Общие вопросы о Unity3D

Рандом с шансом выпадения

Сообщение ChesterRose 23 апр 2017, 17:19

Надо реализовать недо-рулетку, где шанс выпадения одного числа - 50%, 2 числа - 25% и так далее. Я написал такой скрипт, но по непонятным мне причинам он отказывается работать:
Синтаксис:
Используется csharp
public void Buy() {
                int random = Random.Range (1, 100);

                if(random <= 50) {
                        dust += 50;
                } else if(random <= 25) {
                        dust += 100;
                } else if(random <= 12) {
                        dust += 200;
                } else if(random <= 6) {
                        dust += 400;
                } else if(random <= 3) {
                        dust += 800;
                } else if(random <= 2) {
                        dust += 1600;
                } else if(random == 1) {
                        dust += 3200;
                }

                PlayerPrefs.SetInt ("duat", dust);
                dustField.text = PlayerPrefs.GetInt ("dust").ToString ();
                PlayerPrefs.Save ();

        }
 

Есть у кого какие то идеи по реализации? Дайте какие то наводки
ChesterRose
UNец
 
Сообщения: 21
Зарегистрирован: 25 мар 2017, 21:27

Re: Рандом с шансом выпадения

Сообщение Anonymyx 23 апр 2017, 17:26

1ое условие более "общее", если оно выполнится, остальные не выполняются. Улавливаете?
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Рандом с шансом выпадения

Сообщение ChesterRose 23 апр 2017, 17:42

Боже, такая тупая ошибка... Спасибо. Вот пофикшенный код:
Синтаксис:
Используется csharp
public void Buy() {
                int random = Random.Range (1, 100);

                if(random >= 50) {
                        dust += 50;
                } else if(random <= 49 && random >= 13) {
                        dust += 100;
                } else if(random <= 12 && random >= 7) {
                        dust += 200;
                } else if(random <= 6 && random >= 4) {
                        dust += 400;
                } else if(random == 3) {
                        dust += 800;
                } else if(random == 2) {
                        dust += 1600;
                } else if(random == 1) {
                        dust += 3200;
                }

                PlayerPrefs.SetInt ("dust", dust);
                dustField.text = PlayerPrefs.GetInt ("dust").ToString ();
                PlayerPrefs.Save ();

        }
 
ChesterRose
UNец
 
Сообщения: 21
Зарегистрирован: 25 мар 2017, 21:27

Re: Рандом с шансом выпадения

Сообщение mysterio 24 апр 2017, 00:51

Просто в обратном порядке первоначальный вариант записать и все..
mysterio
UNIт
 
Сообщения: 50
Зарегистрирован: 28 мар 2017, 16:40

Re: Рандом с шансом выпадения

Сообщение Valentinus 25 апр 2017, 09:11

вот прям для вашего случая статья от юнити:
https://docs.unity3d.com/ru/current/Man ... mbers.html
другое мое творчество: samlib.ru/u/us_w/
Аватара пользователя
Valentinus
Старожил
 
Сообщения: 889
Зарегистрирован: 24 мар 2017, 18:33


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19