Guest User

Untitled

a guest
Oct 18th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.78 KB | None | 0 0
  1. import random
  2.  
  3. def sample(n, lower, upper):
  4. result = []
  5. pool = {}
  6. for _ in xrange(n):
  7. i = random.randint(lower, upper)
  8. x = pool.get(i, i)
  9. pool[i] = pool.get(lower, lower)
  10. lower += 1
  11. result.append(x)
  12. return result
  13.  
  14. import random
  15. print(lambda x,y,z:random.sample(xrange(y,z),x))(input(),input(),input())
  16.  
  17. python sample.py
  18. 10
  19. 0
  20. 2**31-1
  21. [786475923, 2087214992, 951609341, 1894308203, 173531663, 211170399, 426989602, 1909298419, 1424337410, 2090382873]
  22.  
  23. #include <stdlib.h>
  24. #include <stdint.h>
  25. #define MAX_ALLOC ((uint32_t)0x40000000) //max allocated bytes, fix per platform
  26. #define MAX_SAMPLES (MAX_ALLOC/sizeof(uint32_t))
  27.  
  28. int* randsamp(uint32_t x, uint32_t min, uint32_t max)
  29. {
  30. uint32_t r,i=x,*a;
  31. if (!x||x>MAX_SAMPLES||x>(max-min+1)) return NULL;
  32. a=malloc(x*sizeof(uint32_t));
  33. while (i--) {
  34. r= (max-min+1-i);
  35. a[i]=min+=(r ? rand()%r : 0);
  36. min++;
  37. }
  38. while (x>1) {
  39. r=a[i=rand()%x--];
  40. a[i]=a[x];
  41. a[x]=r;
  42. }
  43. return a;
  44. }
  45.  
  46. def pick(num, min, max)
  47. (min..max).to_a.sample(num)
  48. end
  49.  
  50. p pick(5, 10, 20) #=>[12, 18, 13, 11, 10]
  51.  
  52. s <- function(n, lower, upper) sample(lower:upper,n); s(10,0,2^31-2)
  53.  
  54. object RandSet {
  55. val random = util.Random
  56.  
  57. def rand (count: Int, lower: Int, upper: Int, sofar: Set[Int] = Set.empty): Set[Int] =
  58. if (count == sofar.size) sofar else
  59. rand (count, lower, upper, sofar + (random.nextInt (upper-lower) + lower))
  60. }
  61.  
  62. object RandSetRunner {
  63.  
  64. def main (args: Array [String]) : Unit = {
  65. if (args.length == 4)
  66. (0 until args (0).toInt).foreach { unused =>
  67. println (RandSet.rand (args (1).toInt, args (2).toInt, args (3).toInt).mkString (" "))
  68. }
  69. else Console.err.println ("usage: scala RandSetRunner OUTERCOUNT COUNT MIN MAX")
  70. }
  71. }
  72.  
  73. scalac RandSetRunner.scala
  74. scala RandSetRunner 200 15 0 100
  75.  
  76. time scala RandSetRunner 100000 10 0 1000000 > /dev/null
  77.  
  78. real 0m2.728s
  79. user 0m2.416s
  80. sys 0m0.168s
  81.  
  82. (import srfi-1) ;; for iota
  83. (import srfi-27) ;; randomness
  84. (import srfi-43) ;; for vector-swap!
  85.  
  86. (define rand (random-source-make-integers
  87. default-random-source))
  88.  
  89. ;; n: length, i: lower limit
  90. (define (random-range n i)
  91. (let ([v (list->vector (iota n i))])
  92. (let f ([n n])
  93. (let* ([i (rand n)] [n (- n 1)])
  94. (if (zero? n) v
  95. (begin (vector-swap! v n i) (f n)))))))
  96.  
  97. random <- function(count, from, to) {
  98. rand.range <- to - from
  99.  
  100. vec <- c()
  101.  
  102. for (i in 1:count) {
  103. t <- sample(rand.range, 1) + from
  104. while(i %in% vec) {
  105. t <- sample(rand.range, 1) + from
  106. }
  107. vec <- c(vec, t)
  108. }
  109.  
  110. return(vec)
  111. }
  112.  
  113. f:{(neg x)?y+til z}
  114.  
  115. q)ts do[100000;f[100;1;10000]]
  116. 2418 131456j
  117.  
  118. a=scan();sample(a[2]:a[3],a[1])
  119.  
  120. a=scan();sample(n[n>=a[2]&n<=a[3]],a[1])
  121.  
  122. (a,b,n)=>_.Range(0,n).Select(x=>Math.random()*(b-a)+a).ToArray()
  123.  
  124. # The Tree growing algorithm for uniform sampling without replacement
  125. # by Pavel Ruzankin
  126. quicksample = function (n,size)
  127. # n - the number of items to choose from
  128. # size - the sample size
  129. {
  130. s=as.integer(size)
  131. if (s>n) {
  132. stop("Sample size is greater than the number of items to choose from")
  133. }
  134. # upv=integer(s) #level up edge is pointing to
  135. leftv=integer(s) #left edge is poiting to; must be filled with zeros
  136. rightv=integer(s) #right edge is pointig to; must be filled with zeros
  137. samp=integer(s) #the sample
  138. ordn=integer(s) #relative ordinal number
  139.  
  140. ordn[1L]=1L #initial value for the root vertex
  141. samp[1L]=sample(n,1L)
  142. if (s > 1L) for (j in 2L:s) {
  143. curn=sample(n-j+1L,1L) #current number sampled
  144. curordn=0L #currend ordinal number
  145. v=1L #current vertice
  146. from=1L #how have come here: 0 - by left edge, 1 - by right edge
  147. repeat {
  148. curordn=curordn+ordn[v]
  149. if (curn+curordn>samp[v]) { #going down by the right edge
  150. if (from == 0L) {
  151. ordn[v]=ordn[v]-1L
  152. }
  153. if (rightv[v]!=0L) {
  154. v=rightv[v]
  155. from=1L
  156. } else { #creating a new vertex
  157. samp[j]=curn+curordn
  158. ordn[j]=1L
  159. # upv[j]=v
  160. rightv[v]=j
  161. break
  162. }
  163. } else { #going down by the left edge
  164. if (from==1L) {
  165. ordn[v]=ordn[v]+1L
  166. }
  167. if (leftv[v]!=0L) {
  168. v=leftv[v]
  169. from=0L
  170. } else { #creating a new vertex
  171. samp[j]=curn+curordn-1L
  172. ordn[j]=-1L
  173. # upv[j]=v
  174. leftv[v]=j
  175. break
  176. }
  177. }
  178. }
  179. }
  180. return(samp)
  181. }
  182.  
  183. int rands,elements;
  184. int low,up,i;
  185. i=0;
  186. scanf("%d",&elements);
  187. scanf("%d",&low);
  188. scanf("%d",&up);
  189. /* initialize random seed: */
  190. srand ( time(NULL) );
  191.  
  192. while(1)
  193. { /* generate secret number: */
  194. rands = rand() % up ;
  195. if(rands>=low && rands<=up)
  196. {
  197. printf("%d ",rands);
  198. i++;
  199. }
  200. if(i>=elements)
  201. {
  202. break;
  203. }
  204. }
Add Comment
Please, Sign In to add comment