diff --git a/src/java/com/threerings/cast/util/CastUtil.java b/src/java/com/threerings/cast/util/CastUtil.java index 359b5fede..1b6b70a42 100644 --- a/src/java/com/threerings/cast/util/CastUtil.java +++ b/src/java/com/threerings/cast/util/CastUtil.java @@ -1,5 +1,5 @@ // -// $Id: CastUtil.java,v 1.11 2004/08/27 02:12:29 mdb Exp $ +// $Id$ // // Narya library - tools for developing networked games // Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved @@ -25,7 +25,7 @@ import java.util.ArrayList; import java.util.Iterator; import com.samskivert.util.CollectionUtil; -import com.threerings.util.RandomUtil; +import com.samskivert.util.RandomUtil; import com.threerings.cast.CharacterDescriptor; import com.threerings.cast.ComponentClass; diff --git a/src/java/com/threerings/jme/model/Model.java b/src/java/com/threerings/jme/model/Model.java index 5b002117c..052f7935a 100644 --- a/src/java/com/threerings/jme/model/Model.java +++ b/src/java/com/threerings/jme/model/Model.java @@ -41,8 +41,6 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Properties; -import com.samskivert.util.ObserverList; - import com.jme.bounding.BoundingVolume; import com.jme.math.FastMath; import com.jme.math.Matrix4f; @@ -54,7 +52,8 @@ import com.jme.scene.Controller; import com.jme.scene.Node; import com.jme.scene.Spatial; -import com.threerings.util.RandomUtil; +import com.samskivert.util.ObserverList; +import com.samskivert.util.RandomUtil; import com.threerings.jme.Log; diff --git a/src/java/com/threerings/media/animation/BobbleAnimation.java b/src/java/com/threerings/media/animation/BobbleAnimation.java index a4698f345..01c60a969 100644 --- a/src/java/com/threerings/media/animation/BobbleAnimation.java +++ b/src/java/com/threerings/media/animation/BobbleAnimation.java @@ -1,5 +1,5 @@ // -// $Id: BobbleAnimation.java,v 1.8 2004/08/27 02:12:38 mdb Exp $ +// $Id$ // // Narya library - tools for developing networked games // Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved @@ -24,8 +24,8 @@ package com.threerings.media.animation; import java.awt.Graphics2D; import java.awt.Rectangle; +import com.samskivert.util.RandomUtil; import com.threerings.media.image.Mirage; -import com.threerings.util.RandomUtil; /** * An animation that bobbles an image around within a specific horizontal diff --git a/src/java/com/threerings/media/animation/ExplodeAnimation.java b/src/java/com/threerings/media/animation/ExplodeAnimation.java index 65ebec107..7c3007433 100644 --- a/src/java/com/threerings/media/animation/ExplodeAnimation.java +++ b/src/java/com/threerings/media/animation/ExplodeAnimation.java @@ -1,5 +1,5 @@ // -// $Id: ExplodeAnimation.java,v 1.16 2004/08/27 02:12:38 mdb Exp $ +// $Id$ // // Narya library - tools for developing networked games // Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved @@ -28,8 +28,8 @@ import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.Shape; +import com.samskivert.util.RandomUtil; import com.samskivert.util.StringUtil; -import com.threerings.util.RandomUtil; import com.threerings.media.image.Mirage; diff --git a/src/java/com/threerings/media/animation/RainAnimation.java b/src/java/com/threerings/media/animation/RainAnimation.java index 23fdbfe26..c3714de9f 100644 --- a/src/java/com/threerings/media/animation/RainAnimation.java +++ b/src/java/com/threerings/media/animation/RainAnimation.java @@ -1,5 +1,5 @@ // -// $Id: RainAnimation.java,v 1.6 2004/08/27 02:12:38 mdb Exp $ +// $Id$ // // Narya library - tools for developing networked games // Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved @@ -25,7 +25,7 @@ import java.awt.Color; import java.awt.Graphics2D; import java.awt.Rectangle; -import com.threerings.util.RandomUtil; +import com.samskivert.util.RandomUtil; /** * An animation that displays raindrops spattering across an image. diff --git a/src/java/com/threerings/media/animation/SparkAnimation.java b/src/java/com/threerings/media/animation/SparkAnimation.java index ac8969cce..8fcf1e49f 100644 --- a/src/java/com/threerings/media/animation/SparkAnimation.java +++ b/src/java/com/threerings/media/animation/SparkAnimation.java @@ -27,7 +27,7 @@ import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.Shape; -import com.threerings.util.RandomUtil; +import com.samskivert.util.RandomUtil; import com.threerings.media.animation.Animation; import com.threerings.media.image.Mirage; diff --git a/src/java/com/threerings/media/image/ColorPository.java b/src/java/com/threerings/media/image/ColorPository.java index 3c5edf6c3..bf56b74e0 100644 --- a/src/java/com/threerings/media/image/ColorPository.java +++ b/src/java/com/threerings/media/image/ColorPository.java @@ -33,12 +33,12 @@ import java.io.Serializable; import java.text.ParseException; import com.samskivert.util.HashIntMap; +import com.samskivert.util.RandomUtil; import com.samskivert.util.StringUtil; import com.threerings.media.Log; import com.threerings.resource.ResourceManager; import com.threerings.util.CompiledConfig; -import com.threerings.util.RandomUtil; /** * A repository of image recoloration information. It was called the diff --git a/src/java/com/threerings/media/sound/MusicManager.java b/src/java/com/threerings/media/sound/MusicManager.java index f9f3aa0b2..9149eed4a 100644 --- a/src/java/com/threerings/media/sound/MusicManager.java +++ b/src/java/com/threerings/media/sound/MusicManager.java @@ -25,10 +25,9 @@ import java.util.Iterator; import java.util.LinkedList; import com.samskivert.util.Config; +import com.samskivert.util.RandomUtil; import com.samskivert.util.RunQueue; -import com.threerings.util.RandomUtil; - import com.threerings.media.Log; /** diff --git a/src/java/com/threerings/media/sound/SoundManager.java b/src/java/com/threerings/media/sound/SoundManager.java index d27ff00af..967fc1bae 100644 --- a/src/java/com/threerings/media/sound/SoundManager.java +++ b/src/java/com/threerings/media/sound/SoundManager.java @@ -52,10 +52,10 @@ import com.samskivert.util.ConfigUtil; import com.samskivert.util.Interval; import com.samskivert.util.LRUHashMap; import com.samskivert.util.Queue; +import com.samskivert.util.RandomUtil; import com.samskivert.util.StringUtil; import com.threerings.resource.ResourceManager; -import com.threerings.util.RandomUtil; import com.threerings.media.Log; import com.threerings.media.MediaPrefs; diff --git a/src/java/com/threerings/media/util/BobblePath.java b/src/java/com/threerings/media/util/BobblePath.java index a2996f706..c6282f66f 100644 --- a/src/java/com/threerings/media/util/BobblePath.java +++ b/src/java/com/threerings/media/util/BobblePath.java @@ -24,7 +24,7 @@ package com.threerings.media.util; import java.awt.Color; import java.awt.Graphics2D; -import com.threerings.util.RandomUtil; +import com.samskivert.util.RandomUtil; import com.threerings.media.Log; diff --git a/src/java/com/threerings/media/util/SmoothBobblePath.java b/src/java/com/threerings/media/util/SmoothBobblePath.java index 35ac7c6bf..2ba20b560 100644 --- a/src/java/com/threerings/media/util/SmoothBobblePath.java +++ b/src/java/com/threerings/media/util/SmoothBobblePath.java @@ -21,7 +21,7 @@ package com.threerings.media.util; -import com.threerings.util.RandomUtil; +import com.samskivert.util.RandomUtil; /** * Bobble a Pathable smoothly. diff --git a/src/java/com/threerings/parlor/card/trick/server/TrickCardGameManagerDelegate.java b/src/java/com/threerings/parlor/card/trick/server/TrickCardGameManagerDelegate.java index 89cda766b..7e3e1e77e 100644 --- a/src/java/com/threerings/parlor/card/trick/server/TrickCardGameManagerDelegate.java +++ b/src/java/com/threerings/parlor/card/trick/server/TrickCardGameManagerDelegate.java @@ -26,10 +26,10 @@ import java.util.Arrays; import com.samskivert.util.ArrayUtil; import com.samskivert.util.Interval; +import com.samskivert.util.RandomUtil; import com.samskivert.util.StringUtil; import com.threerings.util.Name; -import com.threerings.util.RandomUtil; import com.threerings.presents.data.ClientObject; import com.threerings.presents.dobj.DObject; diff --git a/src/java/com/threerings/parlor/turn/server/TurnGameManagerDelegate.java b/src/java/com/threerings/parlor/turn/server/TurnGameManagerDelegate.java index b3d31d7da..8eee2003c 100644 --- a/src/java/com/threerings/parlor/turn/server/TurnGameManagerDelegate.java +++ b/src/java/com/threerings/parlor/turn/server/TurnGameManagerDelegate.java @@ -21,8 +21,8 @@ package com.threerings.parlor.turn.server; +import com.samskivert.util.RandomUtil; import com.threerings.util.Name; -import com.threerings.util.RandomUtil; import com.threerings.crowd.data.PlaceObject; diff --git a/src/java/com/threerings/puzzle/server/PuzzleManager.java b/src/java/com/threerings/puzzle/server/PuzzleManager.java index 1ece1d221..b357fd8c5 100644 --- a/src/java/com/threerings/puzzle/server/PuzzleManager.java +++ b/src/java/com/threerings/puzzle/server/PuzzleManager.java @@ -25,6 +25,7 @@ import java.util.Arrays; import com.samskivert.util.IntListUtil; import com.samskivert.util.Interval; +import com.samskivert.util.RandomUtil; import com.samskivert.util.StringUtil; import com.threerings.presents.data.ClientObject; @@ -39,7 +40,6 @@ import com.threerings.parlor.game.server.GameManager; import com.threerings.util.MessageBundle; import com.threerings.util.Name; -import com.threerings.util.RandomUtil; import com.threerings.puzzle.Log; import com.threerings.puzzle.data.Board; diff --git a/src/java/com/threerings/stage/tools/editor/EditorScenePanel.java b/src/java/com/threerings/stage/tools/editor/EditorScenePanel.java index 969d727bb..72dada342 100644 --- a/src/java/com/threerings/stage/tools/editor/EditorScenePanel.java +++ b/src/java/com/threerings/stage/tools/editor/EditorScenePanel.java @@ -32,9 +32,9 @@ import javax.swing.event.ChangeListener; import com.samskivert.swing.Controller; import com.samskivert.swing.TGraphics2D; import com.samskivert.swing.util.SwingUtil; +import com.samskivert.util.RandomUtil; import com.samskivert.util.StringUtil; import com.threerings.util.DirectionCodes; -import com.threerings.util.RandomUtil; import com.threerings.media.tile.ObjectTile; import com.threerings.media.tile.Tile; diff --git a/src/java/com/threerings/stage/tools/viewer/ViewerScenePanel.java b/src/java/com/threerings/stage/tools/viewer/ViewerScenePanel.java index eb0283ebd..cff786c2f 100644 --- a/src/java/com/threerings/stage/tools/viewer/ViewerScenePanel.java +++ b/src/java/com/threerings/stage/tools/viewer/ViewerScenePanel.java @@ -10,10 +10,10 @@ import java.awt.Rectangle; import java.awt.event.MouseEvent; import com.samskivert.swing.Controller; +import com.samskivert.util.RandomUtil; import com.threerings.media.util.PerformanceMonitor; import com.threerings.media.util.PerformanceObserver; -import com.threerings.util.RandomUtil; import com.threerings.cast.CharacterDescriptor; import com.threerings.cast.CharacterManager; diff --git a/src/java/com/threerings/util/RandomUtil.java b/src/java/com/threerings/util/RandomUtil.java deleted file mode 100644 index 37f058c67..000000000 --- a/src/java/com/threerings/util/RandomUtil.java +++ /dev/null @@ -1,299 +0,0 @@ -// -// $Id$ -// -// Narya library - tools for developing networked games -// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved -// http://www.threerings.net/code/narya/ -// -// This library is free software; you can redistribute it and/or modify it -// under the terms of the GNU Lesser General Public License as published -// by the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -package com.threerings.util; - -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.Random; - -import com.samskivert.util.IntListUtil; - -/** - * Provides miscellaneous utility routines to simplify obtaining - * useful random number values and to centralize seeding and proper - * care and feeding of the pseudo-random number generator. - */ -public class RandomUtil -{ - /** The random number generator used by the methods in this class. */ - public static final Random rand = new Random(); - - /** - * Returns a pseudorandom, uniformly distributed int - * value between 0 (inclusive) and the specified value (exclusive). - * - * @param high the high value limiting the random number sought. - */ - public static int getInt (int high) - { - return rand.nextInt(high); - } - - /** - * Returns a pseudorandom, uniformly distributed int - * value between high and low, exclusive of each. - */ - public static int getInt (int high, int low) - { - if (high - low - 1 <= 0) { - throw new IllegalArgumentException( - "Invalid range [high=" + high + ", low=" + low + "]"); - } - return low + 1 + rand.nextInt(high - low - 1); - } - - /** - * Returns a pseudorandom, uniformly distributed float value between - * 0.0 (inclusive) and the specified value (exclusive). - * - * @param high the high value limiting the random number sought. - */ - public static float getFloat (float high) - { - return rand.nextFloat() * high; - } - - /** - * Pick a random index from the array, weighted by the value of the - * corresponding array element. - * - * @param weights an array of non-negative integers. - * @return an index into the array, or -1 if the sum of the weights - * is less than 1. - * - * For example, passing in {1, 0, 3, 4} will return - * - * - * - *
01/8th of the time
1never
23/8th of the time
3half of the time
- */ - public static int getWeightedIndex (int[] weights) - { - int sum = IntListUtil.sum(weights); - if (sum < 1) { - return -1; - } - int pick = getInt(sum); - for (int ii=0, nn=weights.length; ii < nn; ii++) { - pick -= weights[ii]; - if (pick < 0) { - return ii; - } - } - - // Impossible! - Log.logStackTrace(new Throwable()); - return 0; - } - - /** - * Pick a random index from the array, weighted by the value of the - * corresponding array element. - * - * @param weights an array of non-negative floats. - * @return an index into the array, or -1 if the sum of the weights - * is less than or equal to 0.0 or any individual element is negative. - * - * For example, passing in {0.2, 0.0, 0.6, 0.8} will return - * - * - * - *
01/8th of the time
1never
23/8th of the time
3half of the time
- */ - public static int getWeightedIndex (float[] weights) - { - float sum = 0.0f; - for (int ii = 0; ii < weights.length; ii++) { - if (weights[ii] < 0.0f) { - return -1; - } - sum += weights[ii]; - } - - if (sum <= 0.0) { - return -1; - } - float pick = getFloat(sum); - for (int ii=0, nn=weights.length; ii < nn; ii++) { - pick -= weights[ii]; - if (pick < 0.0) { - return ii; - } - } - - // Impossible! - Log.logStackTrace(new Throwable()); - return 0; - } - - /** - * Picks a random object from the supplied array of values. Even - * weight is given to all elements of the array. - * - * @return a randomly selected item or null if the array is null or of - * length zero. - */ - public static T pickRandom (T[] values) - { - return (values == null || values.length == 0) ? null : - values[getInt(values.length)]; - } - - /** - * Picks a random object from the supplied array of values, not - * including the specified skip object as a possible selection - * (equality with the skipped object is referential rather than via - * {@link Object#equals}). The element to be skipped must exist in the - * array exactly once. Even weight is given to all elements of the - * array except the skipped element. - * - * @return a randomly selected item or null if the array is null, of - * length zero or contains only the skip item. - */ - public static T pickRandom (T[] values, T skip) - { - if (values == null || values.length < 2) { - return null; - } - int index = getInt(values.length-1); - for (int ii = 0; ii <= index; ii++) { - if (values[ii] == skip) { - index++; - } - } - return (index >= values.length) ? null : values[index]; - } - - /** - * Picks a random object from the supplied {@link Collection}. - */ - public static T pickRandom (Collection values) - { - return pickRandom(values.iterator(), values.size()); - } - - /** - * Picks a random object from the supplied List - * - * @return a randomly selected item. - */ - public static T pickRandom (List values) - { - int size = values.size(); - if (size == 0) { - throw new IllegalArgumentException( - "Must have at least one element [size=" + size + "]"); - } - return values.get(getInt(size)); - } - - /** - * Picks a random object from the supplied List. The specified skip - * object will be skipped when selecting a random value. The skipped - * object must exist exactly once in the List. - * - * @return a randomly selected item. - */ - public static T pickRandom (List values, T skip) - { - return pickRandom(values, skip, rand); - } - - /** - * Picks a random object from the supplied List. The specified skip - * object will be skipped when selecting a random value. The skipped - * object must exist exactly once in the List. - * - * @return a randomly selected item. - */ - public static T pickRandom (List values, T skip, Random r) - { - int size = values.size(); - if (size < 2) { - throw new IllegalArgumentException( - "Must have at least two elements [size=" + size + "]"); - } - - int pick = r.nextInt(size - 1); - for (int ii = 0; ii < size; ii++) { - T val = values.get(ii); - if ((val != skip) && (pick-- == 0)) { - return val; - } - } - return null; - } - - /** - * Picks a random object from the supplied iterator (which must - * iterate over exactly count objects. - * - * @return a randomly selected item. - * - * @exception NoSuchElementException thrown if the iterator provides - * fewer than count elements. - */ - public static T pickRandom (Iterator iter, int count) - { - if (count < 1) { - throw new IllegalArgumentException( - "Must have at least one element [count=" + count + "]"); - } - - T value = iter.next(); - for (int ii = 0, ll = getInt(count); ii < ll; ii++) { - value = iter.next(); - } - return value; - } - - /** - * Picks a random object from the supplied iterator (which must - * iterate over exactly count objects. The specified skip - * object will be skipped when selecting a random value. The skipped - * object must exist exactly once in the set of objects returned by - * the iterator. - * - * @return a randomly selected item. - * - * @exception NoSuchElementException thrown if the iterator provides - * fewer than count elements. - */ - public static T pickRandom (Iterator iter, int count, T skip) - { - if (count < 2) { - throw new IllegalArgumentException( - "Must have at least two elements [count=" + count + "]"); - } - - int index = getInt(count-1); - T value = null; - do { - value = iter.next(); - if (value == skip) { - value = iter.next(); - } - } while (index-- > 0); - return value; - } -} diff --git a/src/java/com/threerings/util/RobotPlayer.java b/src/java/com/threerings/util/RobotPlayer.java index f550dc976..68b81c328 100644 --- a/src/java/com/threerings/util/RobotPlayer.java +++ b/src/java/com/threerings/util/RobotPlayer.java @@ -27,8 +27,7 @@ import java.util.ArrayList; import com.samskivert.swing.Controller; import com.samskivert.util.CollectionUtil; import com.samskivert.util.Interval; - -import com.threerings.util.RandomUtil; +import com.samskivert.util.RandomUtil; /** * The robot player is a computer player with truly rudimentary artificial diff --git a/tests/src/java/com/threerings/miso/viewer/ViewerSceneViewPanel.java b/tests/src/java/com/threerings/miso/viewer/ViewerSceneViewPanel.java index 71c7c365a..525f6798e 100644 --- a/tests/src/java/com/threerings/miso/viewer/ViewerSceneViewPanel.java +++ b/tests/src/java/com/threerings/miso/viewer/ViewerSceneViewPanel.java @@ -25,7 +25,7 @@ import java.awt.Dimension; import java.awt.Graphics; import java.awt.event.MouseEvent; -import com.threerings.util.RandomUtil; +import com.samskivert.util.RandomUtil; import com.threerings.cast.CharacterDescriptor; import com.threerings.cast.CharacterManager;