From 83485b3be5f293a047ec2ff3f7a55b30e91248df Mon Sep 17 00:00:00 2001 From: visor Date: Sun, 8 Jan 2012 21:34:16 +0900 Subject: [PATCH] random-int function. --- lib/http.cc | 3 --- lib/util_random.cc | 4 ++++ lib/util_random.h | 1 + modules/ml-math.cc | 22 ++++++++++++++++++++++ modules/ml-math.h | 1 + 5 files changed, 28 insertions(+), 3 deletions(-) diff --git a/lib/http.cc b/lib/http.cc index b4edafb..aa5debf 100644 --- a/lib/http.cc +++ b/lib/http.cc @@ -378,9 +378,6 @@ void HTTPSend::makeCookieHeader (ustring& q) { ustring HTTPSend::query (MlEnv* mlenv) { ustring q; -// if (method.length () == 0) { -// method.assign (CharConst ("GET")); -// } switch (method) { case M_GET: q.assign (CharConst ("GET")); diff --git a/lib/util_random.cc b/lib/util_random.cc index 7294376..2a3c600 100644 --- a/lib/util_random.cc +++ b/lib/util_random.cc @@ -94,3 +94,7 @@ double randDouble () { init (); return random () / double (0x80000000UL); } + +long random_int (unsigned long n) { + return random () % n; +} diff --git a/lib/util_random.h b/lib/util_random.h index c40c7f7..011aa38 100644 --- a/lib/util_random.h +++ b/lib/util_random.h @@ -8,5 +8,6 @@ ustring randomKey (unsigned long n); ustring smallRandomKey (); ustring makeSalt (); double randDouble (); +long random_int (unsigned long n); #endif /* UTIL_RANDOM_H */ diff --git a/modules/ml-math.cc b/modules/ml-math.cc index ca83a3f..69fbf4c 100644 --- a/modules/ml-math.cc +++ b/modules/ml-math.cc @@ -223,3 +223,25 @@ MNode* ml_random (MNode* cell, MlEnv* mlenv) { return newMNode_num (randDouble ()); } + +/*DOC: +===random-int=== + (random-int NUM) -> NUMBER +0以上,NUM未満の整数乱数。 + +*/ +//#AFUNC random-int ml_random_int +//#WIKIFUNC random-int +MNode* ml_random_int (MNode* cell, MlEnv* mlenv) { + MNode* arg = cell->cdr (); + int n; + + if (! arg) + throw (uErrorWrongNumber); + n = eval_int (arg->car (), mlenv); + nextNode (arg); + if (arg) + throw (uErrorWrongNumber); + + return newMNode_num (random_int (n)); +} diff --git a/modules/ml-math.h b/modules/ml-math.h index 3dd6aed..a46d663 100644 --- a/modules/ml-math.h +++ b/modules/ml-math.h @@ -14,5 +14,6 @@ MNode* ml_ceil (MNode* cell, MlEnv* mlenv); MNode* ml_floor (MNode* cell, MlEnv* mlenv); MNode* ml_fraction (MNode* cell, MlEnv* mlenv); MNode* ml_random (MNode* cell, MlEnv* mlenv); +MNode* ml_random_int (MNode* cell, MlEnv* mlenv); #endif /* ML_MATH_H */ -- 2.11.0