[try Beta version]
Not logged in

 
How will I be able to create an array of 10,000 random integers?

Sep 14, 2020 at 11:45pm
We were given the starting point for the timing function to record the elapsed time for three sorting algorithms (Bubble, Insertion, Selection) and don't know how to proceed from here.

In this exercise use the program below (ClockTime.cpp) as a starting point for the timing function. Create a program (ch3SortTest.cpp) that will create an array of 10,000 random integers.
A. Sort the array with each of the simple sorting algorithms and record the elapsed time for each sorting algorithm and display the results.
B. Re-load the array with sequential numbers in ascending order and repeat step A.
C. Re-load the array with sequential numbers in descending order and repeat step A.
Your output should look like the screenshot below. Your timing values will vary based on the type of system you use for this test.

https://imgur.com/Vcq1UJM

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 #include <iostream>
#include <ctime>
#include <cmath>
using namespace std;

int main ()
{
	float x,y;
	clock_t time_req;

	// Using pow function
	time_req = clock();		//Get the Starting Time in Microseconds
	for(int i=0; i<100000; i++)
	{
		y = log(pow(i,5));
	}
	time_req = clock() - time_req;	// Get the Ending Time in Microseconds
	cout << "Using pow function, it took " << (float)time_req/CLOCKS_PER_SEC << " seconds" << endl;
	
	// Without pow function
	time_req = clock();
	for(int i=0; i<100000; i++)
	{
		y = log(i*i*i*i*i);
	}
	time_req = clock()- time_req;
	cout << "Without using pow function, it took " << (float)time_req/CLOCKS_PER_SEC << " seconds" << endl;

	return 0;
Last edited on Sep 14, 2020 at 11:57pm
Sep 15, 2020 at 3:27am
Modern c++ random:

https://www.cplusplus.com/reference/random/uniform_int_distribution/

<random> is a little complicated because it has a lot of options, but you can use the example there ... it has everything you need for this program

its likely you get overflow?
100000 to the 5th is 10 to the 25th
this is way larger than unsigned 64 bit int (2 to the 19th roughly)
so you probably have an issue in this code... because i is using integer math, you may want to cast it as a double eg
log( (double)(i)*i*i*i*i) ;

Last edited on Sep 15, 2020 at 3:35am
Sep 15, 2020 at 4:39am
something like this

1
2
3
4
5
6
7
8
#include <time.h>

	srand(time(0));
	int r[10000];

	for (auto x = begin(r); x < end(r);++x) {
		*x=rand()%1000000;
	}
Sep 15, 2020 at 7:19am
 
y = log(pow(i,5));


You do know that this is the same as:

 
y = 5 * log(i);

Sep 15, 2020 at 7:23am
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <algorithm>
using namespace std;

int main ()
{
   const int N = 10000;
   srand( time( 0 ) );
   int A[N];
   for ( int &i : A ) i = rand();
   
   auto start = clock();
   sort( A, A + N );
   auto finish = clock();
   cout << "Time taken: " << 1000.0 * ( finish - start ) / CLOCKS_PER_SEC << " milliseconds\n";
}
Sep 15, 2020 at 5:05pm
I thought it was a 'test how long pow takes' question, is why not use 5* log.
pow does extra work that isnt needed for integers and is a little slow.
Last edited on Sep 15, 2020 at 5:10pm
Topic archived. No new replies allowed.