Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 08.06.2012, 15:26   #1
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Вероятность

Мне нужно, чтобы с увеличением высоты вероятность появления того или иного предмета уменьшалась, пробовал делать рандом:
m# = Rand(1,y/4)
if m=1
    бла-бла-бла
endif
Однако, несмотря на знак "#", рандом считается только в целых числах, что делать?
__________________
(Offline)
 
Ответить с цитированием
Старый 08.06.2012, 15:27   #2
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений
(для 1,471 пользователей)
Ответ: Вероятность

Rnd же
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Devilox (08.06.2012)
Старый 08.06.2012, 15:30   #3
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Вероятность

Спасибо, видимо, я справку плохо читаю

6 знаков после запятой - слишком много, а возможно округлять до определённого знака?(floor,cell,int не подходит)
__________________

Последний раз редактировалось Devilox, 08.06.2012 в 16:25. Причина: Ещё вопрос
(Offline)
 
Ответить с цитированием
Старый 08.06.2012, 23:33   #4
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Вероятность

Сообщение от Devilox Посмотреть сообщение
6 знаков после запятой - слишком много, а возможно округлять до определённого знака?(floor,cell,int не подходит)
Накатал на скорую руку:
Function NumberFormat$(val#, precision = 0)
    
If precision 0 Then precision 0
    
    Local strv
$ = val
    Local dotpos 
Instr(strv,".")
    
    If 
dotpos Or precision 1 Then Return Int(val)
    
    Return 
Mid(strv,1,dotpos 1) + Mid(strvdotposprecision 1)
End Function 
Демка:
SeedRnd(MilliSecs())
Local i
For 0 To 15
    
Print "Precision " " : " NumberFormat(Rnd(0.05.0), i)
Next
WaitKey
() 
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 08.06.2012, 23:44   #5
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Вероятность

Сообщение от Randomize Посмотреть сообщение
Накатал на скорую руку:
Function NumberFormat$(val#, precision = 0)
    
If precision 0 Then precision 0
    
    Local strv
$ = val
    Local dotpos 
Instr(strv,".")
    
    If 
dotpos Or precision 1 Then Return Int(val)
    
    Return 
Mid(strv,1,dotpos 1) + Mid(strvdotposprecision 1)
End Function 
Демка:
SeedRnd(MilliSecs())
Local i
For 0 To 15
    
Print "Precision " " : " NumberFormat(Rnd(0.05.0), i)
Next
WaitKey
() 

А
умножить на 10 в степени N,
floor/cell/round по вкусу
поделить на 10 в степени N

нэ? Лучше со строками возиться?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 08.06.2012, 23:52   #6
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Вероятность

Сообщение от ABTOMAT Посмотреть сообщение
А
умножить на 10 в степени N,
floor/cell/round по вкусу
поделить на 10 в степени N

нэ? Лучше со строками возиться?
Дак я понял автору сугубо надо красивенько вывести СТРОКУ.
Если нет то:
Function Round#(val#,precision)
  
val=Floor(val# * 10^precision)
  
val=val/10^precision
  
return val
End 
function 
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 08.06.2012, 23:55   #7
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Вероятность

Жаль, что нет форматированного вывода как в Си
Стоп-стоп, поцоны.
Блиц же выводит знаки после запятой до первого нуля, так что 3.140000 выведет строкой просто 3.14, так что мой алгоритм тоже канает.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 09.06.2012, 03:44   #8
Hurrit
Мастер
 
Аватар для Hurrit
 
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений
(для 2,207 пользователей)
Ответ: Вероятность

есть такой вариант:

for i=1 to 1000/height
 blablabla action
next
(Offline)
 
Ответить с цитированием
Старый 18.06.2012, 22:33   #9
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Вероятность

Сообщение от Hurrit Посмотреть сообщение
есть такой вариант:

for i=1 to 1000/height
 blablabla action
next
Но это не вероятность, а закономерность
Помоему простой и не запутанный метод, и не вижу смысла с дробями возиться. Можно же "y" сделать любым значением
ran=Rand(1,y*1000)
if ran=227 then ...
__________________
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 02:12.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com