srand () and rand () application


1 #include<stdio.h> 2 #include<time.h> 3 #include<stdlib.h> 4 void bubbleSort(int arr[],int arrSize){ 5 int tmp = 0; 6 int swap = 1; 7 while(swap){ 8 swap = 0; 9 for(int i = 0;i < (arrSize -1);i++){ 10 if(arr[i] > arr[i + 1]){ 11 tmp = arr[i]; 12 arr[i] = arr[i + 1]; 13 arr[i + 1] = tmp; 14 swap = 1; 15 } 16 } 17 } 18 19 return; 20 } 21 22 void outArr(char* name, char* time,int arr[],int arrSize){ 23 printf("%s %s is: \n",name,time); 24 for(int i = 0;i < arrSize;i++){ 25 printf("%d\t",arr[i]); 26 } 27 printf("\n"); 28 return; 29 } 30 31 32 void insertSort(int arr[],int arrSize){ 33 for(int i = 1;i < arrSize;i++){ 34 if(arr[i] < arr[i - 1]){ 35 int j = 0; 36 int tmp = arr[i]; 37 for(j = i - 1; j >= 0 && tmp < arr[j];j--){ 38 arr[j + 1] = arr[j]; 39 } 40 arr[j + 1] =tmp; 41 } 42 } 43 return; 44 } 45 46 47 void binaryInsertSort(int arr[],int arrSize){ 48 int tmp = 0; 49 int i = 0; 50 int j = 0; 51 int low = 0; 52 int high = 0; 53 for(i = 0;i < arrSize;i++){ 54 tmp = arr[i]; 55 low = 0; 56 high = i - 1; 57 while(low <= high){ 58 int mid = (low + high)/2; 59 if(tmp < arr[mid]){ 60 high = high - 1; 61 } 62 else{ 63 low = low + 1; 64 } 65 } 66 for(j = i - 1;j >= low;j--){ 67 arr[j + 1] = arr[j]; 68 } 69 arr[low] = tmp; 70 } 71 return; 72 } 73 74 75 void selectSort(int arr[],int arrSize){ 76 for(int i = 0;i < arrSize;i++){ 77 int index = i; 78 for(int j = i + 1;j < arrSize;j++){ 79 if(arr[j] < arr[index]){ 80 index = j; 81 } 82 } 83 if(index != i){ 84 int tmp = arr[index]; 85 arr[index] = arr[i]; 86 arr[i] = tmp; 87 } 88 } 89 return; 90 } 91 92 93 94 int partition(int arr[], int low, int high){ 95 int i = low; 96 int j = high; 97 int tmp = arr[low]; 98 while(i < j){ 99 while(i < j && arr[j] >= tmp){ 100 j--; 101 } 102 if(i < j){ 103 arr[i] = arr[j]; 104 i++; 105 while(i < j && arr[i] <= tmp){ 106 i++; 107 } 108 if(i < j){ 109 arr[j] = arr[i]; 110 j--; 111 } 112 } 113 } 114 arr[i] = tmp; 115 116 return i; 117 } 118 119 120 121 void quickSort(int arr[], int left, int right){ 122 if(left < right){ 123 int tmp = partition(arr, left, right); 124 quickSort(arr, left, tmp - 1); 125 quickSort(arr, tmp + 1, right); 126 } 127 return; 128 } 129 130 131 132 int main(int argc, char **argv) 133 { 134 int n = 10; 135 int m = 100; 136 int s = 50; 137 int *arr0 = (int *)malloc(sizeof(int)*n); 138 srand((int)time(NULL)); 139 for(int i = 0;i < n;i++){ 140 *(arr0+i) = rand() % m; 141 //int *(arr1 + i) = rand() % m; 142 //int *(arr2 + i) = rand() % m; 143 //int *(arr3 + i) = rand() % m; 144 //int *(arr4 + i) = rand() % m; 145 } 146 147 148 /* 149 int arr0[] = {42, 93, 64, 15, 26, 57, 48, 79, 80}; 150 int arr1[] = {42, 93, 64, 15, 26, 57, 48, 79, 80}; 151 int arr2[] = {42, 93, 64, 15, 26, 57, 48, 79, 80}; 152 int arr3[] = {42, 93, 64, 15, 26, 57, 48, 79, 80}; 153 int arr4[] = {42, 93, 64, 15, 26, 57, 48, 79, 80}; 154 */ 155 int *ptrArr[] = {arr0}; 156 int arrSize = n; 157 outArr("bubbleSort", "before", *(ptrArr + 0), arrSize); 158 159 bubbleSort(*(ptrArr + 0), arrSize); 160 outArr("bubbleSort", "after", *(ptrArr + 0), arrSize); 161 /* 162 outArr("insertSort", "before", *(ptrArr + 1), arrSize); 163 insertSort(*(ptrArr + 1), arrSize); 164 outArr("insertSort", "after", *(ptrArr + 1), arrSize); 165 outArr("binaryInsertSort", "before", *(ptrArr + 2), arrSize); 166 binaryInsertSort(*(ptrArr + 2), arrSize); 167 outArr("binaryInsertSort", "after", *(ptrArr + 2), arrSize); 168 outArr("selectSort", "before", *(ptrArr + 3), arrSize); 169 selectSort(*(ptrArr + 3), arrSize); 170 outArr("selectSort", "after", *(ptrArr + 3), arrSize); 171 outArr("quickSort", "before", *(ptrArr + 4), arrSize); 172 quickSort(*(ptrArr + 4), 0, arrSize - 1); 173 outArr("quickSort", "after", *(ptrArr + 4), arrSize); 174 */ 175 /* 176 int n = 10; 177 int m = 100; 178 int s = 50; 179 srand((int)time(NULL)); 180 for(int i = 0;i < n;i++){ 181 printf("%d",rand()%m); 182 printf("\n"); 183 }*/ 184 185 } 186 187 188

A, rand ()

rand () function is used to generate random numbers, however, the internal rand () implementation is achieved using a linear congruential method, a pseudo-random number, due to a longer period, thus within a certain range can be considered as random.

rand () returns a 0 to the range and RAND_MAX (at least 32,767) pseudo-random number (an integer) between.

Before calling the rand () function, you can use srand () function sets the random number seed, if not set the random number seed, rand () function when calling, automatic design random number seed 1. The same random seed, the random number generated will be the same every time.

rand () function is required header file: <stdlib.h>

rand () Function Prototype: int rand (void);
using the rand () function generates a random integer within 1-100: int number1 = rand () % 100 + 1;

Two, srand ()

srand () function is still required header files: <stdlib.h>

srand () had Prototype: void srand (usigned int seed);

srand () to set the rand () generates a random number at the random number seed. Seed parameter is an integer, typically can be utilized time (0) or getpid (0) seed as the return value.

Using the rand () and srand () generates a random integer within 1 to 100:

    srand(time(NULL));

    int number1 = rand() % 100+1;

Third, using the rand () and srand () generating random integers within the specified range

"Mod + addition" method

Because, for an arbitrary number, 0 <= rand ()% (nm + 1) <= nm

Thus, 0 + m <= rand ()% (n-m + 1) + m <= n-m + m

Therefore, to produce [m, n] in the range of random numbers num, Available:

int num = rand ()% (n-m + 1) + m;

Wherein the rand ()% (n-m + 1) + m be a formula, after the record about easy access.

Such as to generate a random integer of 10 to 30:

     srand(time(NULL));

      int a = rand() % (21)+10;

 

Guess you like

Origin www.cnblogs.com/ylqywwyy/p/11728377.html