NAME

get_random_unit_vector - Gets a uniform random vector

SYNOPSIS

#include "m/m_vector.h"

Example compile flags (system dependent):
  -DLINUX_X86_64 -DLINUX_X86_64_OPTERON  -DGNU_COMPILER 
   -I/home/kobus/include
   -L/home/kobus/misc/load/linux_x86_64_opteron -L/usr/lib/x86_64-linux-gnu
  -lKJB                               -lfftw3  -lgsl -lgslcblas -ljpeg  -lSVM -lstdc++                    -lpthread -lSLATEC -lg2c    -lacml -lacml_mv -lblas -lg2c      -lncursesw 


int get_random_unit_vector
(
	Vector **target_vpp,
	int length
);

DESCRIPTION

this routine gets a random unit-vector of the specified length, uniformly distributed on the unit-sphere. This routine uses rejection sampling to get truly uniform samples. The rejection rate is just below 50% for a 3-vector, 69% for a 4-vector, 83% for a 5-vector, 92% for a 6-vector, and approaches 100% asymtotically above 6 dimensions. Thus, this isn't recommended for dimensions above 4, and a warning will display in this case.

RETURNS

NO_ERROR on success and ERROR on failure This routine will only fail if storage allocation fails.

DISCLAIMER

This software is not adequatedly tested. It is recomended that results are checked independantly where appropriate.

AUTHOR

Kobus Barnard

DOCUMENTER

Kobus Barnard

SEE ALSO

get_unity_vector , get_zero_vector , get_initialized_vector , get_target_vector , free_vector , get_random_vector , get_random_vector_2 , vp_get_indexed_vector , get_zero_indexed_vector , get_random_indexed_vector , get_target_indexed_vector , free_indexed_vector , ascend_sort_indexed_vector , descend_sort_indexed_vector , get_target_vector_vector , free_vector_vector , allocate_2D_vp_array , free_2D_vp_array_and_vectors , get_target_v3 , free_v3 , get_target_v4 , free_v4