You can not select more than 25 topics 
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long. 
		
		
		
		
		
			
	
	
		
			
	
		
			This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
		 
	
		
		
			
				
				
					
						
						
						
							define ( [ './_isArrayLike' ,  './values' ,  './_getLength' ,  './random' ,  './toArray' ] ,  function  ( _isArrayLike ,  values ,  _getLength ,  random ,  toArray )  { 
 
						
						
						
							
 
						
						
						
							  // Sample **n** random values from a collection using the modern version of the
  
						
						
						
							// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–   
						
						
						
							// If **n** is not specified, returns a single random element.
  
						
						
						
							// The internal `guard` argument allows it to work with `_.map`.
  
						
						
						
							function  sample ( obj ,  n ,  guard )  { 
 
						
						
						
							    if  ( n  ==  null  ||  guard )  { 
 
						
						
						
							      if  ( ! _isArrayLike ( obj ) )  obj  =  values ( obj ) ; 
 
						
						
						
							      return  obj [ random ( obj . length  -  1 ) ] ; 
 
						
						
						
							    } 
 
						
						
						
							    var  sample  =  toArray ( obj ) ; 
 
						
						
						
							    var  length  =  _getLength ( sample ) ; 
 
						
						
						
							    n  =  Math . max ( Math . min ( n ,  length ) ,  0 ) ; 
 
						
						
						
							    var  last  =  length  -  1 ; 
 
						
						
						
							    for  ( var  index  =  0 ;  index  <  n ;  index ++ )  { 
 
						
						
						
							      var  rand  =  random ( index ,  last ) ; 
 
						
						
						
							      var  temp  =  sample [ index ] ; 
 
						
						
						
							      sample [ index ]  =  sample [ rand ] ; 
 
						
						
						
							      sample [ rand ]  =  temp ; 
 
						
						
						
							    } 
 
						
						
						
							    return  sample . slice ( 0 ,  n ) ; 
 
						
						
						
							  } 
 
						
						
						
							
 
						
						
						
							  return  sample ; 
 
						
						
						
							
 
						
						
						
							} ) ;