Given N and Standard Deviation, find N elements
Given N and Standard deviation find the N elements.
Mean is average of element.
Mean of arr[0..n-1] = Σ(arr[i]) / n
where 0 <= i < nVariance is sum of squared differences from the mean divided by number of elements.
Variance = Σ(arr[i] – mean)2 / n
Standard Deviation is square root of variance
Standard Deviation = Σ(variance)Please refer Mean, Variance and Standard Deviation for details.
Examples:
Input: 6 0 Output: 0 0 0 0 0 0 Explanation: The standard deviation of 0, 0, 0, 0, 0, 0 is 0. Also the standard deviation of 4, 4, 4, 4, 4, 4 is 0, we print any of the possible N elements. Input: 3 3 Output: 0 -3.67423 3.67423 Explanation: On calculating SD of these N elements, we get standard deviation to be 3.
Approach:
If we look at the formula, we have two unknown terms one is xi and the other is mean. The main motive is to make the mean 0 so that we can get the formula for X elements. There will be two cases, one for even and one for odd.
When N is even:
To make mean of N elements 0, best way is to express N elements as -X +X -X +X …. Formula will be sqrt(summation of (x^2)/n), x2+x^2+x^2+………N terms, so formula turns out to be sqrt (N*(x^2)/N). N cancel out each other, so sqrt (x^2) turns out to be SD. So, we get the N elements as -SD +SD -SD +SD…… to get the mean 0. We need to print -SD +SD -SD +SD……
When N is odd:
The mean of N elements will be 0. So, one element will be 0 and other N-1 elements will be -X +X -X …. Formula will be sqrt(summation of (x^2)/n), x2+x^2+x^2+………N-1 terms, so formula turns out to be sqrt((N-1)*(x^2)/N), so
X= SD * sqrt(n/(n-1)). The n elements are 0 -X +X -X +X …
When SD is 0 then all elements will be same, so we can print 0 for it.
Below is the implementation of the above approach:
C++
// CPP program to find n elements #include <bits/stdc++.h> using namespace std; // function to print series of n elements void series( int n, int d) { // if S.D. is 0 then print all // elements as 0. if (d == 0) { // print n 0's for ( int i = 0; i < n; i++) cout << "0 " ; cout << endl; return ; } // if S.D. is even if (n % 2 == 0) { // print -SD, +SD, -SD, +SD for ( int i = 1; i <= n; i++) { cout << pow (-1, i) * d << " " ; } cout << endl; } else // if odd { // convert n to a float integer float m = n; float r = (m / (m - 1)); float g = ( float )(d * ( float )sqrtf(r)); // print one element to be 0 cout << "0 " ; // print (n-1) elements as xi derived // from the formula for ( int i = 1; i < n; i++) { cout << pow (-1, i) * g << " " ; } cout << endl; } } // driver program to test the above function int main() { int n = 3, d = 3; series(n, d); return 0; } |
Java
// Java program to find n elements import java.util.*; import java.lang.*; public class GfG { // function to print series of n elements public static void series( int n, int d) { // if S.D. is 0 then print all // elements as 0. if (d == 0 ) { // print n 0's for ( int i = 0 ; i < n; i++) System.out.print( "0 " ); System.out.println(); return ; } // if S.D. is even if (n % 2 == 0 ) { // print -SD, +SD, -SD, +SD for ( int i = 1 ; i <= n; i++) { System.out.print(Math.pow(- 1 , i) * d + " " ); } System.out.println(); } else // if odd { // convert n to a float integer float m = n; float r = (m / (m - 1 )); float g = ( float )(d * ( float )(Math.sqrt(r))); // print one element to be 0 System.out.print( "0 " ); // print (n-1) elements as xi // derived from the formula for ( int i = 1 ; i < n; i++) { System.out.print(Math.pow(- 1 , i) * g + " " ); } System.out.println(); } } // driver function public static void main(String args[]) { int n = 3 , d = 3 ; series(n, d); } } /* This code is contributed by Sagar Shukla */ |
Python3
# Python program to find n elements import math # function to print series of n elements def series( n, d): # if S.D. is 0 then print all # elements as 0. if d = = 0 : # print n 0's for i in range (n): print ( "0" , end = ' ' ) return 1 # if S.D. is even if n % 2 = = 0 : # print -SD, +SD, -SD, +SD i = 1 while i < = n: print ( "%.5f" % ((math. pow ( - 1 , i) * d)), end = ' ' ) i + = 1 else : # if odd # convert n to a float integer m = n r = (m / (m - 1 )) g = ( float )(d * float (math.sqrt(r))) # print one element to be 0 print ( "0 " , end = ' ' ) # print (n-1) elements as xi derived # from the formula i = 1 while i < n: print ( "%.5f" % (math. pow ( - 1 , i) * g), end = ' ' ) i = i + 1 print ( "\n" ) # driver code to test the above function n = 3 d = 3 series(n, d) # This code is contributed by "Sharad_Bhardwaj". |
C#
// C# program to find n elements using System; public class GfG { // function to print series of n // elements public static void series( int n, int d) { // if S.D. is 0 then print all // elements as 0. if (d == 0) { // print n 0's for ( int i = 0; i < n; i++) Console.Write( "0" ); Console.WriteLine(); return ; } // if S.D. is even if (n % 2 == 0) { // print -SD, +SD, -SD, +SD for ( int i = 1; i <= n; i++) { Console.Write(Math.Pow(-1, i) * d + " " ); } Console.WriteLine(); } else // if odd { // convert n to a float integer float m = n; float r = (m / (m - 1)); float g = ( float )(d * ( float )(Math.Sqrt(r))); // print one element to be 0 Console.Write( "0 " ); // print (n-1) elements as xi // derived from the formula for ( int i = 1; i < n; i++) { Console.Write(Math.Pow(-1, i) * g + " " ); } Console.WriteLine(); } } // driver function public static void Main() { int n = 3, d = 3; series(n, d); } } // This code is contributed by vt_m. |
PHP
<?php // PHP program to find n elements // function to print // series of n elements function series( $n , $d ) { // if S.D. is 0 then print all // elements as 0. if ( $d == 0) { // print n 0's for ( $i = 0; $i < $n ; $i ++) echo "0 " ; echo "\n" ; return ; } // if S.D. is even if ( $n % 2 == 0) { // print -SD, +SD, -SD, +SD for ( $i = 1; $i <= $n ; $i ++) { echo pow(-1, $i ) * $d , " " ; } echo "\n" ; } // if odd else { // convert n to a // float integer $m = $n ; $r = ( $m / ( $m - 1)); $g = ( $d * sqrt( $r )); // print one element // to be 0 echo "0 " ; // print (n-1) elements // as xi derived // from the formula for ( $i = 1; $i < $n ; $i ++) { echo pow(-1, $i ) * $g , " " ; } echo "\n" ; } } // Driver Code $n = 3; $d = 3; series( $n , $d ); // This code is contributed by anuj_67. ?> |
Output:
0 -3.67423 3.67423
Recommended Posts:
- Program to find whether a no is power of two
- Program to find parity
- Find minimum number to be divided to make a number a perfect square
- Find whether a given number is a power of 4 or not
- Find Union and Intersection of two unsorted arrays
- To find sum of two numbers without using any operator
- Find day of the week for a given date
- Given a number, find the next smallest palindrome
- Find the element that appears once
- Find the largest multiple of 2, 3 and 5
- Program to find amount of water in a given glass
- Print all possible combinations of r elements in a given array of size n
- Find the maximum distance covered using n bikes
- Find if two rectangles overlap
- Find the smallest number whose digits multiply to a given number n
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : vt_m