|
08.06.2012, 15:26
|
#1
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Вероятность
Мне нужно, чтобы с увеличением высоты вероятность появления того или иного предмета уменьшалась, пробовал делать рандом:
m# = Rand(1,y/4)
if m=1
бла-бла-бла
endif
Однако, несмотря на знак "#", рандом считается только в целых числах, что делать?
__________________
|
(Offline)
|
|
08.06.2012, 15:27
|
#2
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Вероятность
Rnd же
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.06.2012, 15:30
|
#3
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Вероятность
Спасибо, видимо, я справку плохо читаю
6 знаков после запятой - слишком много, а возможно округлять до определённого знака?(floor,cell,int не подходит)
__________________
Последний раз редактировалось Devilox, 08.06.2012 в 16:25.
Причина: Ещё вопрос
|
(Offline)
|
|
08.06.2012, 23:33
|
#4
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,360
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Вероятность
Сообщение от 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 < 1 Or precision < 1 Then Return Int(val) Return Mid(strv,1,dotpos - 1) + Mid(strv, dotpos, precision + 1) End Function
Демка:
SeedRnd(MilliSecs()) Local i For i = 0 To 15 Print "Precision " + i + " : " + NumberFormat(Rnd(0.0, 5.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
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 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 < 1 Or precision < 1 Then Return Int(val) Return Mid(strv,1,dotpos - 1) + Mid(strv, dotpos, precision + 1) End Function
Демка:
SeedRnd(MilliSecs()) Local i For i = 0 To 15 Print "Precision " + i + " : " + NumberFormat(Rnd(0.0, 5.0), i) Next WaitKey()
|
А
умножить на 10 в степени N,
floor/cell/round по вкусу
поделить на 10 в степени N
нэ? Лучше со строками возиться?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
08.06.2012, 23:52
|
#6
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,360
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Вероятность
Сообщение от 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
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Вероятность
Жаль, что нет форматированного вывода как в Си
Стоп-стоп, поцоны.
Блиц же выводит знаки после запятой до первого нуля, так что 3.140000 выведет строкой просто 3.14, так что мой алгоритм тоже канает.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
09.06.2012, 03:44
|
#8
|
Мастер
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений (для 2,207 пользователей)
|
Ответ: Вероятность
есть такой вариант:
for i=1 to 1000/height
blablabla action
next
|
(Offline)
|
|
18.06.2012, 22:33
|
#9
|
Разработчик
Регистрация: 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)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:43.
|