A program is required to test the fairness of the random number generator. The one-dimensional (1D) array RandomNumber[] is used to store 100000 random integers. The two-dimensional (2D) array CountedNumber[] is used to store the integers 1 to 10, inclusive, and the frequency of each integer (the number of times each integer was generated). Write a program that meets the following requirements: • Generate 100000 random integers between 1 and 10, inclusive. • Store each integer in the appropriate array. • Calculate the frequency of each of the integers 1 to 10 and store these values in the appropriate array. • Sort the contents of the counted number array in descending order of frequency. • Calculate the chance of generating each of the integers 1 to 10, rounded to four decimal places. • Use the formula: chance = frequency / 100000 • Output each of the integers 1 to 10 in the order they are stored in the counted number array, along with the chance of generating them. The following is an example of an algorithm that sorts a 2D array in an ascending order: F ← TRUE WHILE F DO F ← FALSE FOR I ← 1 TO 9 IF A[I, 2] > A[I + 1, 2] THEN T1 ← A[I, 1] T2 ← A[I, 2] A[I, 1] ← A[I + 1, 1] A[I, 2] ← A[I + 1, 2] A[I + 1, 1] ← T1 A[I + 1, 2] ← T2 F ← TRUE ENDIF NEXT I ENDWHILE You must use pseudocode or program code and add comments to explain how your code works. All arrays, variables or constants used must be declared for this algorithm. All inputs and outputs must contain suitable messages.
- A program is required to test the fairness of the random number generator. The one-dimensional (1D) array RandomNumber[] is used to store 100000 random integers. The two-dimensional (2D) array CountedNumber[] is used to store the integers 1 to 10, inclusive, and the frequency of each integer (the number of times each integer was generated). Write a program that meets the following requirements: • Generate 100000 random integers between 1 and 10, inclusive. • Store each integer in the appropriate array. • Calculate the frequency of each of the integers 1 to 10 and store these values in the appropriate array. • Sort the contents of the counted number array in descending order of frequency. • Calculate the chance of generating each of the integers 1 to 10, rounded to four decimal places. • Use the formula: chance = frequency / 100000 • Output each of the integers 1 to 10 in the order they are stored in the counted number array, along with the chance of generating them. The following is an example of an algorithm that sorts a 2D array in an ascending order: F ← TRUE WHILE F DO F ← FALSE FOR I ← 1 TO 9 IF A[I, 2] > A[I + 1, 2] THEN T1 ← A[I, 1] T2 ← A[I, 2] A[I, 1] ← A[I + 1, 1] A[I, 2] ← A[I + 1, 2] A[I + 1, 1] ← T1 A[I + 1, 2] ← T2 F ← TRUE ENDIF NEXT I ENDWHILE You must use pseudocode or program code and add comments to explain how your code works. All arrays, variables or constants used must be declared for this algorithm. All inputs and outputs must contain suitable messages.[15]
Mark scheme
Marking points from the official mark scheme (Oct/Nov 2025). The mark or mark type is shown in brackets.
- [15] Use the tables for AO2 and AO3 below to award a mark in a suitable band using a best fit approach, then add up the total. Marks are available for: • AO2 (maximum 9 marks) • AO3 (maximum 6 marks)
- [15] Data Structures required with names as given in the scenario: Arrays or lists RandomNumber[], CountedNumber[]
- [15] Requirements (techniques) R1 arrays and variables declared, then 100 000 random integers between 1 and 10, inclusive, generated and stored in an array, (array and variable declarations, iteration, random number generation, rounding and storage).
- [15] R2 frequency of each random integer counted and results stored in array, then results sorted into descending order (initialisation, selection, counting, sort, nested iteration, storage).
- [15] R3 calculation of the chance of each random integer occurring rounded to 4 d.p. and results output (iteration, rounding and output).
- [15] Example 15-mark answer in pseudocode // array and variable declaration DECLARE RandomNumber : ARRAY[1:100000] OF INTEGER DECLARE CountedNumber : ARRAY[1:10, 1:2] OF INTEGER DECLARE Index1 : INTEGER DECLARE Index2 : INTEGER DECLARE Swap : BOOLEAN DECLARE Temp1 : INTEGER DECLARE Temp2 : INTEGER // generate 100000 random integers between 1 and 10, inclusive, // and store them in an array FOR Index1 ← 1 TO 100000 RandomNumber[Index1] ← ROUND(RANDOM() * 9,0) + 1 NEXT Index1 // initialising the CountedNumber array FOR Index1 ← 1 TO 10 CountedNumber[Index1, 1] ← Index1 CountedNumber[Index1, 2] ← 0 NEXT Index1 // counting the frequency of each of the random integers // and storing the frequencies in an array FOR Index1 ← 1 TO 10 FOR Index2 ← 1 TO 100000 IF RandomNumber[Index2] = CountedNumber[Index1, 1] THEN CountedNumber[Index1, 2] ← CountedNumber[Index1, 2] + 1 ENDIF NEXT Index2 NEXT Index1 // performing sort on frequencies, so the possible random numbers // are stored in descending order of frequency Swap ← TRUE WHILE Swap DO // sort is terminated when no swaps take place during a pass Swap ← FALSE FOR Index1 ← 1 TO 9 IF CountedNumber[Index1, 2] < CountedNumber[Index1 + 1, 2] THEN Temp1 ← CountedNumber [Index1, 1] Temp2 ← CountedNumber[Index1, 2] CountedNumber[Index1, 1] ← CountedNumber[Index1 + 1, 1] CountedNumber[Index1, 2] ← CountedNumber[Index1 + 1, 2] CountedNumber [Index1 + 1, 1] ← Temp1 CountedNumber [Index1 + 1, 2] ← Temp2 Swap ← TRUE ENDIF NEXT Index1 ENDWHILE // outputting the results, with chances for each random number // calculated to 4 d.p. // results in descending order of frequency FOR Index1 ← 1 TO 10 OUTPUT "The chance of ", CountedNumber[Index1, 1], " occurring is: " OUTPUT ROUND(CountedNumber[Index1, 2]/100000, 4) NEXT Index1
Write your answer and get it marked
On Oracle Prep you can write or photograph your own answer and have it marked by AI against this mark scheme, with feedback on what you missed.
Sign up free →