Русское сообщество по скриптингу

[Помощь] UTIL_SharedRandomFloat из плюсов в amxx

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

[Помощь] UTIL_SharedRandomFloat из плюсов в amxx

Сообщение Ruby » 07 июл 2019, 13:13

Как будет UTIL_SharedRandomFloat на amxx?
Код: Выделить всё
float UTIL_SharedRandomFloat(unsigned int seed, float low, float high)
{
    unsigned int range = high - low;
    U_Srand((unsigned int)seed + *(unsigned int *)&low + *(unsigned int *)&high);

    U_Random();
    U_Random();

    if (range)
    {
        int tensixrand = U_Random() & 0xFFFFu;
        float offset = float(tensixrand) / 0x10000u;
        return (low + offset * range);
    }

    return low;
}
Аватара пользователя
Ruby
 
Сообщения: 4
Зарегистрирован: 07 июл 2019, 13:03
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Я ничего не знаю

Re: [Помощь] UTIL_SharedRandomFloat из плюсов в amxx

Сообщение fl0wer » 07 июл 2019, 14:33

random_float
Аватара пользователя
fl0wer
 
Сообщения: 1687
Зарегистрирован: 27 фев 2011, 21:35
Откуда: Россия, Ижевск
Благодарил (а): 240 раз.
Поблагодарили: 508 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++, Java, PAWN

Re: [Помощь] UTIL_SharedRandomFloat из плюсов в amxx

Сообщение Ruby » 07 июл 2019, 15:35

Есть код:
Код: Выделить всё
= UTIL_SharedRandomFloat(shared_rand, -0.5, 0.5) + UTIL_SharedRandomFloat(shared_rand + 1, -0.5, 0.5);
= UTIL_SharedRandomFloat(shared_rand + 2, -0.5, 0.5) + UTIL_SharedRandomFloat(shared_rand + 3, -0.5, 0.5); 

А как быть с первым значением? (shared_rand)
Код: Выделить всё
= shared_rand + 2 + random_float( -0.5, 0.5 ) + shared_rand + 3 + random_float( -0.5, 0.5 );
или нет?
Аватара пользователя
Ruby
 
Сообщения: 4
Зарегистрирован: 07 июл 2019, 13:03
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Я ничего не знаю

Re: [Помощь] UTIL_SharedRandomFloat из плюсов в amxx

Сообщение Mistrick » 07 июл 2019, 17:04

Вы должны зарегистрироваться, чтобы видеть ссылки. ... .cpp#L4829
Семя рандома берется из CmdStart форварда.
Внутри вашей UTIL_SharedRandomFloat еще U_Srand, U_Random им аналогов в амхх нет. Скопировать поведение вы не сможете.
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: [Помощь] UTIL_SharedRandomFloat из плюсов в amxx

Сообщение Ruby » 07 июл 2019, 19:07

Немного погуглив прочёл, что семя используется для того, чтобы каждый раз числа генерировались не по определенному шаблону. Так ведь?
А random_float генерирует числа также по определенному шаблону или нет? (Нет возможности проверить)
Если нет, то можно просто его использовать?
Аватара пользователя
Ruby
 
Сообщения: 4
Зарегистрирован: 07 июл 2019, 13:03
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Я ничего не знаю


Вернуться в Вопросы по AMXX и его плагинам

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

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