亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? random_util.c

?? http://gaul.sourceforge.net/ 這里大部分人討論的是在Matlab里實現(xiàn)GA的toolbox.以上為一個GA的C語言的軟件包.如果你想利用GA做優(yōu)化算法,非常有用.而且有
?? C
?? 第 1 頁 / 共 3 頁
字號:
/**********************************************************************  random_util.c **********************************************************************  random_util - Pseudo-random number generation routines.  Copyright ?2000-2004, Stewart Adcock <stewart@linux-domain.com>  All rights reserved.  The latest version of this program should be available at:  http://gaul.sourceforge.net/  This program is free software; you can redistribute it and/or modify  it under the terms of the GNU General Public License as published by  the Free Software Foundation; either version 2 of the License, or  (at your option) any later version.  Alternatively, if your project  is incompatible with the GPL, I will probably agree to requests  for permission to use the terms of any other license.  This program is distributed in the hope that it will be useful, but  WITHOUT ANY WARRANTY WHATSOEVER.  A full copy of the GNU General Public License should be in the file  "COPYING" provided with this distribution; if not, see:  http://www.gnu.org/ **********************************************************************  Synopsis:	Portable routines for generating pseudo random numbers.		Why use these instead of the system routines?		(a) Useful interface functions. (can specify ranges or		specific distributions)		(b) System independant. (Generated numbers are		reproducible across system types.)		(c) Enables saving and restoring state.		SLang intrinsic function wrappers are provided if the		HAVE_SLANG constant is set to 1.		The algorithm I selected is the Mitchell and Moore		variant of the standard additive number generator.		The required array of numbers is populated by a		using single seed value by using a linear		congruential pseudo random number generator.		This routines have been tested and provide the same		output (within the limits of computational precision)		on (at least) the following platforms:		o Intel x86 (Linux, OpenBSD, FreeBSD)		o AMD x86-64 (Linux, FreeBSD)		o IBM Power3 (AIX)		o IBM PowerPC (Linux)		o MIPS R4K, R10K, R12K (IRIX)		o Alpha EV56 (Tru64), EV7 (Linux)		o SPARC Ultra-4 (Solaris)		This code should be thread safe.		For OpenMP code, USE_OPENMP must be defined and 		random_init() or random_seed() must be called BY A		SINGLE THREAD prior to any other function.		  References:	Standard additive number generator and the linear		congruential algorithm:		Knuth D.E., "The Art of Computer Programming",		Vol 2, 2nd ed. (1998)		General information:		Press W., Flannery B.P., Teukolsky S.A., Vetterling W.T.,		"Numerical Recipes in C: The Art of Scientific Computing"		Cambridge University Press, 2nd ed. (1992)  Usage:	o First call random_init().		o Call random_seed() to seed the PRNG (like srand()).		  Alternatively, random_tseed() to use system clock for seed.		o random_rand() is a rand() replacement, which is available		  for use but I would recommend the wrapper functions:		  random_int(), random_int_range() etc.		o random_get_state() and random_set_state() may be used		  to set, save, restore, and query the current state.		These functions can be tested by compiling with		something like:		gcc -o testrand random_util.c -DRANDOM_UTIL_TEST  To do:	Gaussian/Boltzmann distributions.		Need a proper test of randomness.		Properly implement stack of states.		I could do with some handy documentation. **********************************************************************/#include "gaul/random_util.h"/* * PRNG constants.  Don't mess with these values willie-nillie. */#define RANDOM_MM_ALPHA	55#define RANDOM_MM_BETA	24#define RANDOM_LC_ALPHA	3#define RANDOM_LC_BETA	257#define RANDOM_LC_GAMMA	RANDOM_RAND_MAX/* * Global state variable stack. * (Implemented using singly-linked list.) *//*static GSList	*state_list=NULL;*/static random_state	current_state;static boolean		is_initialised=FALSE;THREAD_LOCK_DEFINE_STATIC(random_state_lock);/********************************************************************** random_rand() Synopsis:	Replacement for the standard rand().		Returns a new pseudo-random value from the sequence, in		the range 0 to RANDOM_RAND_MAX inclusive, and updates		global state for next call.  size should be non-zero,		and state should be initialized.  parameters:  return:	none  last updated:	30/12/00 **********************************************************************/unsigned int random_rand(void)  {  unsigned int val;  if (!is_initialised) die("Neither random_init() or random_seed() have been called.");  THREAD_LOCK(random_state_lock);  val = (current_state.v[current_state.j]+current_state.v[current_state.k])        & RANDOM_RAND_MAX;  current_state.x = (current_state.x+1) % RANDOM_NUM_STATE_VALS;  current_state.j = (current_state.j+1) % RANDOM_NUM_STATE_VALS;  current_state.k = (current_state.k+1) % RANDOM_NUM_STATE_VALS;  current_state.v[current_state.x] = val;  THREAD_UNLOCK(random_state_lock);  return val;  } /**********************************************************************  random_seed()  synopsis:	Set seed for pseudo random number generator.		Uses the linear congruential algorithm to fill		state array.  parameters:	const unsigned int seed		Seed value.  return:	none  last updated: 04 May 2004 **********************************************************************/void random_seed(const unsigned int seed)  {   int	i; #if USE_OPENMP == 1  if (is_initialised == FALSE)    {    omp_init_lock(&random_state_lock);    is_initialised = TRUE;    }#else  is_initialised = TRUE;#endif  THREAD_LOCK(random_state_lock);  current_state.v[0]=(seed & RANDOM_RAND_MAX);  for(i=1; i<RANDOM_NUM_STATE_VALS; i++)    current_state.v[i] = (RANDOM_LC_ALPHA * current_state.v[i-1]                          + RANDOM_LC_BETA) & RANDOM_RAND_MAX;  current_state.j = 0;  current_state.k = RANDOM_MM_ALPHA-RANDOM_MM_BETA;  current_state.x = RANDOM_MM_ALPHA-0;  THREAD_UNLOCK(random_state_lock);  return;  } /**********************************************************************  random_tseed()  synopsis:	Set seed for pseudo random number generator from		the system time.  parameters:  return:	none  last updated:	28/01/01 **********************************************************************/void random_tseed(void)  {   random_seed((unsigned int) (time(NULL)%RANDOM_RAND_MAX));  return;  } /*************************************************************************  random_get_state()  synopsis:	Retrieve current state.  This can be used for saving		the current state.  parameters:	none  return:	random_state state  last updated:	16/05/00*************************************************************************/random_state random_get_state(void)  {  return current_state;  }/*************************************************************************  random_set_state()  synopsis:	Replace current state with specified state.		This can be used for restoring a saved state.  parameters:	random_state state  return:	none  last updated:	16/05/00*************************************************************************/void random_set_state(random_state state)  {  current_state = state;  return;  }/*************************************************************************  random_get_state_str()  synopsis:	Retrieve current state encoded as a static string.		This can be used for saving the current state.  parameters:	none  return:	char *  last updated:	28/01/01*************************************************************************/char *random_get_state_str(void)  {  return (char *) &current_state;  }/*************************************************************************  random_get_state_str_len()  synopsis:	Retrieve the length of the string encoded current state.		This can be used for saving the current state.  parameters:	none  return:	char *  last updated:	28/01/01*************************************************************************/unsigned int random_get_state_str_len(void)  {  return (unsigned int) sizeof(random_state);  }/*************************************************************************  random_set_state_str()  synopsis:	Replace current state with specified state.		This can be used for restoring a saved state.  parameters:	char *  return:	none  last updated:	28/01/01*************************************************************************/void random_set_state_str(char *state)  {  /* This causes potential unaligned trap on Alpha CPUs. */  current_state = *((random_state *)state);  return;  }/**********************************************************************  random_init()  synopsis:	Initialise random number generators.  Should be		called prior to any of these functions being used.		Seeds the PRNG with a seed of 1.  parameters:	none  return:	none  last updated:	30 May 2002 **********************************************************************/void random_init(void)  {  random_seed(1);#if RANDOM_DEBUG>0  printf("DEBUG: Random number routines initialised.\n");#endif  return;  }/**********************************************************************  random_isinit()  synopsis:	Whether these routines have been initialised.  parameters:  return:	none  last updated:	30/12/00 **********************************************************************/boolean random_isinit(void)  {  return is_initialised;  }/**********************************************************************  PRNG interface routines. **********************************************************************//**********************************************************************  random_boolean()  synopsis:	Return TRUE 50% of the time.  parameters:  return:	none  last updated:	16/05/00 **********************************************************************/boolean random_boolean(void)  {  return (random_rand() <= RANDOM_RAND_MAX/2);  }/**********************************************************************  random_boolean_prob()  synopsis:	Return TRUE (prob*100)% of the time.  parameters:  return:	TRUE or FALSE.  last updated:	16/05/00 **********************************************************************/boolean random_boolean_prob(const double prob)  {  return (random_rand() <= (unsigned int)(prob*(double)RANDOM_RAND_MAX));  }/**********************************************************************  random_int()  synopsis:	Return a random integer between 0 and (N-1) inclusive.  parameters:  return:  last updated:	05 Jun 2003 **********************************************************************/unsigned int random_int(const unsigned int max)  {/*  return (int)((double)random_rand()*max/RANDOM_RAND_MAX);*/  if (max==0)    return 0;  else    return random_rand()%max;  }/**********************************************************************  random_int_range()  synopsis:	Return a random integer between min and max-1 inclusive.  parameters:  return:  last updated:	05 Jun 2003 **********************************************************************/int random_int_range(const int min, const int max)  {/*  return (random_rand()*(max-min)/RANDOM_RAND_MAX + min);*/  if (max-min==0)    return max;  else    return min + (random_rand()%(max-min));  }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品天干天干在线综合| 国产成人午夜电影网| 理论电影国产精品| 色94色欧美sute亚洲线路二| 日韩一区二区免费电影| 亚洲精品成人在线| 国产精品99久久久久久久女警| 欧美日韩一级片在线观看| 国产日韩欧美高清| 久久精品国产久精国产| 日本精品视频一区二区三区| 国产亚洲一二三区| 麻豆成人av在线| 欧美精品第1页| 一区二区三区在线视频免费观看| 国产精品综合二区| 精品理论电影在线观看 | 欧美性受xxxx黑人xyx| 久久精品人人做人人综合 | 亚洲精品视频一区二区| 免费成人av在线播放| 欧美综合在线视频| 亚洲品质自拍视频| 91视频观看免费| 亚洲视频 欧洲视频| www.99精品| 亚洲图片欧美激情| av在线不卡电影| 自拍av一区二区三区| 国产成人精品免费网站| 久久影音资源网| 国产精品18久久久久久vr| 欧美tickling挠脚心丨vk| 蜜桃久久av一区| 精品免费99久久| 国产99久久久国产精品免费看| 久久综合九色综合97婷婷| 国产精品一区免费视频| 久久久精品国产99久久精品芒果| 国产一区二区伦理片| 国产视频亚洲色图| 成人一区在线看| 亚洲欧美日韩国产综合| 一本久道久久综合中文字幕| 亚洲激情六月丁香| 9191精品国产综合久久久久久| 青青草一区二区三区| 精品伦理精品一区| 成人av动漫在线| 亚洲电影中文字幕在线观看| 欧美一区二区国产| 欧美亚洲丝袜传媒另类| 亚洲成人福利片| 日韩视频在线一区二区| 大胆亚洲人体视频| 亚洲综合视频在线观看| 日韩亚洲欧美中文三级| 国产在线一区观看| 中文字幕中文字幕中文字幕亚洲无线| 色婷婷精品久久二区二区蜜臀av| 日日夜夜免费精品| 国产日产欧产精品推荐色| 91麻豆成人久久精品二区三区| 亚洲电影视频在线| 久久久99久久精品欧美| 91小视频免费看| 青青草国产成人av片免费| 日本一区二区三区高清不卡| 91麻豆国产在线观看| 日本不卡视频在线| 国产精品久久久久久久久动漫| 欧美日韩国产在线播放网站| 韩国欧美国产一区| 亚洲一区中文日韩| 久久综合成人精品亚洲另类欧美 | 国产免费成人在线视频| 91福利国产成人精品照片| 久久成人羞羞网站| 一区二区三区电影在线播| 日韩女优电影在线观看| 成人av电影免费在线播放| 日本亚洲电影天堂| 日韩美女精品在线| 久久久天堂av| 制服丝袜av成人在线看| 成人av电影观看| 久久97超碰国产精品超碰| 尤物视频一区二区| 国产精品天干天干在线综合| 日韩三级在线免费观看| 欧美影视一区在线| 99精品国产一区二区三区不卡| 麻豆精品国产91久久久久久| 亚洲一区二区在线免费看| 国产日韩影视精品| 欧美tickling网站挠脚心| 欧美日韩高清一区二区三区| av激情综合网| 成熟亚洲日本毛茸茸凸凹| 蜜桃91丨九色丨蝌蚪91桃色| 一区二区三区欧美视频| 亚洲国产精品成人综合| 日韩午夜精品视频| 欧美电影在哪看比较好| 色哟哟国产精品| av福利精品导航| 成人教育av在线| 国产成人精品影视| 国产一区二区精品久久| 久久国产精品区| 日本不卡一二三区黄网| 日韩国产欧美视频| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲老司机在线| 一区二区三区四区不卡在线| 亚洲欧洲精品天堂一级| 国产精品久久久久影视| 欧美极品xxx| 国产精品免费看片| 国产精品久久久久久久浪潮网站 | 亚洲精品在线电影| 精品卡一卡二卡三卡四在线| 日韩欧美国产一二三区| 日韩欧美亚洲国产精品字幕久久久| 欧美日韩电影一区| 欧美一卡二卡三卡| 日韩欧美一区中文| 久久综合色8888| 中文字幕第一区二区| 亚洲视频综合在线| 亚洲国产欧美在线| 蜜桃在线一区二区三区| 国产乱对白刺激视频不卡| 国产一区不卡视频| av在线播放不卡| 欧美性受xxxx黑人xyx| 欧美一区二区三区思思人| 欧美一区二区女人| 欧美经典一区二区三区| 亚洲特黄一级片| 蜜臀va亚洲va欧美va天堂| 国产精品一二三在| 欧洲国内综合视频| 日韩一卡二卡三卡国产欧美| 国产偷国产偷亚洲高清人白洁| 一区在线观看免费| 亚洲成人av在线电影| 六月婷婷色综合| av在线不卡观看免费观看| 欧美性色黄大片| 久久久久久久久久久99999| 亚洲丝袜美腿综合| 欧美aaa在线| 99久精品国产| 欧美一区二区在线播放| 国产精品欧美久久久久无广告| 亚洲午夜久久久久中文字幕久| 九九**精品视频免费播放| 91一区在线观看| 日韩午夜av一区| 国产精品久久久久aaaa| 日本美女一区二区三区| 99久久精品免费| 日韩一区二区电影| 亚洲精品伦理在线| 国产精品1024| 欧美一区二区三区视频| 亚洲天堂免费在线观看视频| 毛片基地黄久久久久久天堂| 97成人超碰视| 久久综合资源网| 蜜臀久久99精品久久久久久9| 色综合久久精品| 国产日韩视频一区二区三区| 日本伊人色综合网| 欧美亚洲国产怡红院影院| 中文字幕不卡在线观看| 国产一区视频在线看| 欧美一级日韩一级| 亚洲图片欧美综合| 91在线精品一区二区三区| 久久久精品欧美丰满| 欧美a级理论片| 欧美日本在线播放| 亚洲精品福利视频网站| 不卡视频在线观看| 久久久国际精品| 国产精品亚洲一区二区三区妖精 | 免费观看久久久4p| 欧美亚洲综合网| 一区二区在线免费| 91在线观看一区二区| 中文一区在线播放| 懂色av一区二区夜夜嗨| 久久精品一区二区三区四区| 久久66热re国产| 精品国精品自拍自在线| 精品在线观看免费| 欧美一级欧美三级在线观看 | 国产精品亚洲午夜一区二区三区|