+ Reply to Thread
Results 1 to 2 of 2

Thread: Когда рандом не рандомит

  1. #1

    Default Когда рандом не рандомит

    Доброго времени суток. Закрался вопрос, на который (в силу хренового знания си) ответить не смог.
    Почему вот в таком отрывке кода функция random работает совершенно однозначно, выдавая раз за разом один и тот же результат?

    Code:
    char f1(char a)
    {
    	char ss = 0xd;
    	static int t = 0;
    	int b = a1(rand()) % 0xffff;
    
    	b <<= 4;
    	b ^= (k[(t++) % ss] >> 4);
    	b <<= 4;
    	b ^= (k[(t++) % ss]);
    
    	a ^= (char)b;
    	return a;
    }
    
    int a1(int a) {
    	if (a < 0)
    		return (-a);
    	else
    		return a;
    }
    P.S. выше включен srand(time(0)); так что причина какая-та другая

  2. #2

    Default Re: Когда рандом не рандомит

    Потому что (char)b оставляет только младшие 8 битов, в которых нет ничего от rand(). Всё рандомное ушло в старшие разряды двумя командами b<<=4.

+ Reply to Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
All times are GMT. The time now is 10:31
vBulletin® Copyright ©2000 - 2018
www.reverse4you.org