Рандомные числа без повторения

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
C-подобный:
public void OnPluginStart()
{
    int array[64] = {0, 0, ...};
    bool sad = false;
   
    for(int i = 0; i < sizeof(array);)
    {
        sad = false;
        int randNum = GetRandomInt(0, sizeof(array));
       
        for(int x = 0; x < sizeof(array); x++)
        {
            if(randNum == array[x])
            {
                sad = true;
                break;
            }
        }
       
        if(!sad)
        {
            array[i] = randNum;
            i++
        }
    }
   
    PrintArray(array, sizeof(array));
}

stock void PrintArray(const int[] array, const int length)
{
    for(int i = 0; i < length; i++)
    {
        PrintToServer("%d", array[i]);
    }
}
Я был близок к этому коду в субботу 😀
C-подобный:
public Action Cmd_Test(int iClient, int iArgs)
{
    int iNumber[5] = {-1, ...};
    bool bAction = true;

    for(int i = 0; i < sizeof(iNumber); ++i)
    {
        int iRand = GetRandomInt(0, sizeof(iNumber) - 1);

        for(int j = 0; j < sizeof(iNumber); ++j)
        {
            if(iNumber[j] == iRand)
            {
                bAction = false;
            }
        }

        if(bAction)
        {
            iNumber[i] = iRand;
        }
    }

    PrintToConsole(iClient, "%i %i %i %i %i", iNumber[0], iNumber[1], iNumber[2], iNumber[3], iNumber[4]);
    return Plugin_Handled;
}
 

DeathScore13

пирожок. пирожочек.
Сообщения
734
Реакции
403
C-подобный:
public void OnPluginStart()
{
    int array[64] = {0, 0, ...};
    bool sad = false;
   
    for(int i = 0; i < sizeof(array);)
    {
        sad = false;
        int randNum = GetRandomInt(0, sizeof(array));
       
        for(int x = 0; x < sizeof(array); x++)
        {
            if(randNum == array[x])
            {
                sad = true;
                break;
            }
        }
       
        if(!sad)
        {
            array[i] = randNum;
            i++
        }
    }
   
    PrintArray(array, sizeof(array));
}

stock void PrintArray(const int[] array, const int length)
{
    for(int i = 0; i < length; i++)
    {
        PrintToServer("%d", array[i]);
    }
}
попрошу заметить
1647387875776.png
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
Да я вот так себе сделал, мне так удобней как то. Не знаю только лучшее ли такой вариант или нет.
C++:
public Action Cmd_Test(int iClient, int iArgs)
{
    int iNumber[5] = {-1, ...};
    bool bAction = true;
   
    for(int i = 0; i < sizeof(iNumber);)
    {
        bAction = true;
        int iRand = GetRandomInt(0, 4);
       
        for(int j = 0; j < sizeof(iNumber); ++j)
        {
            if(iNumber[j] == iRand)
            {
                bAction = false;
                break;
            }
        }
       
        if(bAction)
        {
            iNumber[i] = iRand;
            ++i;
        }
    }

    PrintToConsole(iClient, "%i %i %i %i %i", iNumber[0], iNumber[1], iNumber[2], iNumber[3], iNumber[4]);
    return Plugin_Handled;
}
 

DeathScore13

пирожок. пирожочек.
Сообщения
734
Реакции
403
Да я вот так себе сделал, мне так удобней как то. Не знаю только лучшее ли такой вариант или нет.
C++:
public Action Cmd_Test(int iClient, int iArgs)
{
    int iNumber[5] = {-1, ...};
    bool bAction = true;
 
    for(int i = 0; i < sizeof(iNumber);)
    {
        bAction = true;
        int iRand = GetRandomInt(0, 4);
     
        for(int j = 0; j < sizeof(iNumber); ++j)
        {
            if(iNumber[j] == iRand)
            {
                bAction = false;
                break;
            }
        }
     
        if(bAction)
        {
            iNumber[i] = iRand;
            ++i;
        }
    }

    PrintToConsole(iClient, "%i %i %i %i %i", iNumber[0], iNumber[1], iNumber[2], iNumber[3], iNumber[4]);
    return Plugin_Handled;
}
а, у вас макс. значение такое же как размер массива.. советую использовать вариант с перемешиванием
 
Сверху Снизу