forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Вероятность (http://forum.boolean.name/showthread.php?t=16882)

Devilox 08.06.2012 15:26

Вероятность
 
Мне нужно, чтобы с увеличением высоты вероятность появления того или иного предмета уменьшалась, пробовал делать рандом:
Код:

m# = Rand(1,y/4)
if m=1
    бла-бла-бла
endif

Однако, несмотря на знак "#", рандом считается только в целых числах, что делать?

Nerd 08.06.2012 15:27

Ответ: Вероятность
 
Rnd же

Devilox 08.06.2012 15:30

Ответ: Вероятность
 
Спасибо, видимо, я справку плохо читаю :-D

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

Randomize 08.06.2012 23:33

Ответ: Вероятность
 
Цитата:

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

Накатал на скорую руку:
PHP код:

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 

Демка:
PHP код:

SeedRnd(MilliSecs())
Local i
For 0 To 15
    
Print "Precision " " : " NumberFormat(Rnd(0.05.0), i)
Next
WaitKey
() 


ABTOMAT 08.06.2012 23:44

Ответ: Вероятность
 
Цитата:

Сообщение от Randomize (Сообщение 229870)
Накатал на скорую руку:
PHP код:

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 

Демка:
PHP код:

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

нэ? Лучше со строками возиться?

Randomize 08.06.2012 23:52

Ответ: Вероятность
 
Цитата:

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

нэ? Лучше со строками возиться?

Дак я понял автору сугубо надо красивенько вывести СТРОКУ.
Если нет то:
PHP код:

Function Round#(val#,precision)
  
val=Floor(val# * 10^precision)
  
val=val/10^precision
  
return val
End 
function 


ABTOMAT 08.06.2012 23:55

Ответ: Вероятность
 
Жаль, что нет форматированного вывода как в Си
Стоп-стоп, поцоны.
Блиц же выводит знаки после запятой до первого нуля, так что 3.140000 выведет строкой просто 3.14, так что мой алгоритм тоже канает.

Hurrit 09.06.2012 03:44

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

Код:

for i=1 to 1000/height
 blablabla action
next


burovalex 18.06.2012 22:33

Ответ: Вероятность
 
Цитата:

Сообщение от Hurrit (Сообщение 229893)
есть такой вариант:

Код:

for i=1 to 1000/height
 blablabla action
next


Но это не вероятность, а закономерность
Помоему простой и не запутанный метод, и не вижу смысла с дробями возиться. Можно же "y" сделать любым значением :dontknow:
Код:

ran=Rand(1,y*1000)
if ran=227 then ...



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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot