Вверх ↑
Этот топик читают: Гость
Ответов: 1528
Рейтинг: 57
#1: 2013-02-20 15:01:34 ЛС | профиль | цитата
есть список из чисел 10,21,38
нужно просчитывать их выпадение по алгоритму
10 = 1
21 = 2
38 = 3
10 = 4
21 = 5
38 = 6
10 = 7
21 = 8
38 = 9
...


вопрос, как узнать какое число выпадет на рандомную итерацию ?
карма: 0

0
Ответов: 4630
Рейтинг: 749
#2: 2013-02-20 15:09:44 ЛС | профиль | цитата
i mod 3, где i - номер итерации (2-ая колонка?). Если 0 - выпало число 3, иначе - то что возвратило. Не?
[offtop]или 3 - (i mod 3) - возвратит точно число (кажеться).[/offtop]
карма: 26

1
Голосовали:hitman249
Ответов: 758
Рейтинг: 112
#3: 2013-02-20 15:11:19 ЛС | профиль | цитата
Если "остаток от деления на 3" = 0 то "число" = 3
иначе "число" = "остаток от деления на 3"
карма: 1

1
Голосовали:hitman249
Гость
Ответов: 17029
Рейтинг: 0
#4: 2013-02-20 15:14:48 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-03 17:45:36
карма: 0

0
Ответов: 3349
Рейтинг: 233
#5: 2013-02-20 15:15:06 ЛС | профиль | цитата
% - остаток от деления
карма: 1

1
Голосовали:hitman249
Ответов: 1528
Рейтинг: 57
#6: 2013-02-20 19:42:10 ЛС | профиль | цитата
всем спасибо, выбран вариант от Ivann.
карма: 0

0
Ответов: 3349
Рейтинг: 233
#7: 2013-02-21 12:08:27 ЛС | профиль | цитата
((($i - 1) % 3) + 1) * 10 + (($i - 1) % 3) ^ ((($i - 1) % 3) + 1)
карма: 1

1
Голосовали:hitman249
Ответов: 1528
Рейтинг: 57
#8: 2013-02-21 12:15:38 ЛС | профиль | цитата
Ivann, $i = 12; fail
это не нужно, числа всегда разные
нужно получать просто индекс массива
карма: 0

0
Ответов: 3349
Рейтинг: 233
#9: 2013-02-21 12:18:54 ЛС | профиль | цитата
hitman249,
<?php
for($i = 1; $i < 100; $i++) echo $i.' --- '.((((($i - 1) % 3) + 1) * 10) + pow(($i - 1) % 3, (($i - 1) % 3) + 1)).'<br />';
?>
карма: 1

1
Голосовали:hitman249
Ответов: 1528
Рейтинг: 57
#10: 2013-02-21 12:27:46 ЛС | профиль | цитата
Ivann, довольно интересно, хотел плюсануть но время ещё не прошло

сейчас достаточно
<?php
$i = 12;
$in = array(10,21,38);
echo (($i - 1) % count($in));
?>


карма: 0

0
Ответов: 1528
Рейтинг: 57
#11: 2013-09-02 13:30:38 ЛС | профиль | цитата
продолжу

есть 2 массива
1) [часы] (пример 1,2,3,4,12,23)
2) [минуты] (пример 00, 05, 10, 15, 45)

есть текущее время
есть массив "событий" (такой же "array(10,21,38);")
события должны чередоваться на каждую минуту из массива

максимально событий (count([часы]) * count([минуты]))

Задача: текущее время = 12-05
как определить какое это событие по счёту?

карма: 0

0
Ответов: 9906
Рейтинг: 351
#12: 2013-09-02 13:41:00 ЛС | профиль | цитата
Мда уж......
Тут без математиков не обойтись
карма: 9

0
Ответов: 1528
Рейтинг: 57
#13: 2013-09-02 13:54:39 ЛС | профиль | цитата
Galkov,
покажите молодым как сделать красиво, через формулу
карма: 0

0
Ответов: 8927
Рейтинг: 823
#14: 2013-09-02 17:30:14 ЛС | профиль | цитата
hitman249, подумать бы, как обрисовать задачу, чтобы было ясно всем
code_31726.txt
карма: 19

1
файлы: 1code_31726.txt [2.1KB] [157]
Голосовали:hitman249
Ответов: 1528
Рейтинг: 57
#15: 2013-09-03 06:45:23 ЛС | профиль | цитата
Леонид, хе-хе, вот такое же решение и я использовал, но оно показалось мне не серьёзным.
точнее я написал функцию которая отсчитывает по порядку возможные варианты и отдаёт высчитанное число этой формуле, которая в свою очередь и выдаёт номер ячейки.
echo (($i - 1) % count($in));
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)