看uboot的时候发现随机数的另外一种算法

#include <stdio.h>
#include <time.h>

static unsigned int y = 1U;

unsigned int rand_r(unsigned int *seedp)
{
    *seedp ^= (*seedp << 13);  //这里居然用异或和位移来实现,感觉很强大
    *seedp ^= (*seedp >> 17);
    *seedp ^= (*seedp << 5);
    return *seedp;
}

unsigned int rand(void)
{
    return rand_r(&y);
}

void srand(unsigned int seed)
{
    y = seed;
}

int main(void)
{
	int i  ;
	srand(time(NULL)) ;
	for(i = 0 ; i < 100 ; i++)
		printf("%d\n", rand() % 100) ;
}

执行结果是随机产生的100个数。

时间: 2024-11-25 13:43:37

看uboot的时候发现随机数的另外一种算法的相关文章

发现一段精简的模板算法(非原创)

引用自: http://ejohn.org/blog/javascript-micro-templating/ // Simple JavaScript Templating // John Resig - http://ejohn.org/ - MIT Licensed (function(){ var cache = {}; this.tmpl = function tmpl(str, data){ // Figure out if we're getting a template, or

看了这个才发现jQuery源代码不是那么晦涩

很多人觉得jquery.ext等一些开源js源代码 十分的晦涩,读不懂,遇到问题需要调试也很费劲.其实我个人感觉主要是有几个方面的原因: 1.对一些js不常用的语法.操作符不熟悉 2.某个function中又嵌套了一些内部的function,使得整个代码的层次结构不像java代码那么清晰. 3.js中允许变量先使用后定义,会造成我们看代码时候忽然冒出来一个变量.function,却找不到是在哪里定义的. 那么今天给大家分享一下我的经验,扫清你的障碍. 一.一些晦涩的操作符: 1.(functio

[转]看了这个才发现jQuery源代码不是那么晦涩

很多人觉得jquery.ext等一些开源js源代码 十分的晦涩,读不懂,遇到问题需要调试也很费劲.其实我个人感觉主要是有几个方面的原因: 对一些js不常用的语法.操作符不熟悉 某个function中又嵌套了一些内部的function,使得整个代码的层次结构不像java代码那么清晰. js中允许变量先使用后定义,会造成我们看代码时候忽然冒出来一个变量.function,却找不到是在哪里定义的. 那么今天给大家分享一下我的经验,扫清你的障碍. 一些晦涩的操作符: (function(){})();

一个php生成16位随机数的代码(两种方法)

一个php生成16位随机数的代码,php生成随机数的二种方法. 方法1<?php$a = mt_rand(10000000,99999999);$b = mt_rand(10000000,99999999);echo $a.$b; 方法2:<?php$a = range(0,9);for($i=0;$i<16;$i++){$b[] = array_rand($a);} // www.yuju100.comvar_dump(join("",$b));//结果string

产生随机数数组的两种方法

别人的 import numpy as np import random as rd #method one def random_int_list(start, stop, length): start, stop = (int(start), int(stop)) if start <= stop else (int(stop), int(start)) length = int(abs(length)) if length else 0 random_list = [] for i in

PHP实现冒泡算法

我发现很多公司面试的时候都会出一道冒泡算法的题,这么基础的算法,一般程序员应该都写得出来,但是今天我在网上看了一下,发现很多文章中的冒泡算法都是错的,根本就不是冒泡算法!还堂而皇之的说什么解析冒泡算法,真是误导新人啊.我就直接上代码了,这,才是冒泡算法. <?php function bubbleSort($ary){ $len = count($ary); for ($i=0; $i < $len - 1; $i++) { for ($j=0; $j < $len - 1 -$i; $

[UiAutomator] UiSelector中instance与index的用法

在使用UiAutomator写测试用例时,最常用到的就是控件查找操作. 在UiSelector中,有两个定位控件的方法,一个是instance,一个是index.那么这两个方法有什么区别呢? 首先,我们看一下官方api说明: instance(int instance): Set the search criteria to match the widget by its instance number. The instance value must be 0 or greater, wher

8种主要排序算法的C#实现

新的一年到了,很多园友都辞职要去追求更好的工作环境,我也是其中一个,呵呵! 最近闲暇的时候我开始重温一些常用的算法.老早就买了<算法导论>,一直都没啃下去. 这本书确实很好,只是太难读了,总是读了几章就又读不下去了!工作上也几乎用不到. 我这段时间发现看这些排序算法比以前容易了很多,就借此机会将它们整理总结起来. 一是方便以后重温,二是可以应对笔试面试.同时也希望这篇博文可以帮助各位刚辞职和正在学习排序算法的园友. PS:有可能实现的代码并不是最优的,如果有什么错误或者值得改进的地方,还请大家

CodeForces 222A

题意:给一串数,一种操作,问是所有数字相等的操作数: 思路:还是蛮水的,但我看了半天才发现1.2两种操作是一次操作...弱爆了...判断第k个数开始是否都相等,再判断k之前有几个数不需要删掉的. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n,k,i,j,m,flag; int a[500010],rcount; int main() { while(sc